C#图解教程第5版(1)

Rider编程环境

  • 安装Rider
  • 打开Rider,在新建console界面中安装 SDK9.0 或更新版本
  • 为了方便使用csc编译器,将类似 C:\JetBrainsRider\tools\MSBuild\Current\Bin\Roslyn 加入系统path

第1章 C# 和 .net 框架

  • c#读音: see sharp
  • CLR: 公共语言运行时,是执行环境,包含GC自动管理内存
  • BCL:基础类库

第2章 C# 和 .net Core

.net Core 与 app并行发布,每个app可以有自己的.net Core版本不会有版本冲突,占用空间小

第3章 C#编程概述

参考:https://learn.microsoft.com/zh-cn/dotnet/core/tutorials/top-level-templates

从 .NET 6 开始,新 C# 控制台应用的项目模板会在 Program.cs 文件中生成以下代码:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

实际上是使用了隐式的using指令:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;

如果不用隐式using,可以编辑类似 ConsoleApp1.csproj 的项目文件,增加 <ImplicitUsings>disable</ImplicitUsings>:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    ...
    <ImplicitUsings>disable</ImplicitUsings>
  </PropertyGroup>

</Project>

完整示例:

// See https://aka.ms/new-console-template for more information
using System;  // 命名空间

namespace ConsoleApp1   //命名空间
{
    internal abstract class Program
    {
        private static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!你好,世界");
        }
    }
}

使用csharp compiler 编译:

csc .\Program.cs
Microsoft(R) Visual C# 编译器 版本 4.13.0-dev.25178.1 (<developer build>)
版权所有(C) Microsoft Corporation。保留所有权利。

Main()方法:程序入口

可以用位置或变量输出字符串:

using System;  

namespace ConsoleApp1;

internal abstract class Program
{
    private static void Main(string[] args)
    {
        int v1 = 1;
        int v2 = 2; 
        Console.WriteLine("输出整数示例:{0},{1},{0}",3,4);//输出整数示例:3,4,3
        Console.WriteLine($"输出整数示例:{v1},{v2},{0},{1}",5,6);//输出整数示例:1,2,0,1
    }
}

字符串格式:

序号,宽度(正负号表示右对齐或左对齐):格式

using System;  

namespace ConsoleApp1;

internal abstract class Program
{
    private static void Main(string[] args)
    {
        Console.WriteLine("You should pay |{0}|",500); //You should pay |500|
        Console.WriteLine("You should pay |{0,10}|",500);//You should pay |       500|
        Console.WriteLine("You should pay |{0,-10}|",500);//You should pay |500       |
        Console.WriteLine("You should pay |{0,-10:c}|",500);//You should pay |¥500.00   |
    }
}

冒号后的格式形式:Axx,其中A为格式说明符是单个字母,xx为精度说明符为1到2位数字

A可以为:

  • G,g:general,默认
  • C,C:currency,货币,货币符号和操作系统设置的所在区域相关,为¥,$等
  • D,d:十进制整数,位数不够补零
  • F,f:十进制小数,精度为小数位数
  • X,x:十六进制数
  • N,n:和F类似,小数点左侧有逗号或空格分隔符
  • P,p:百分比
  • E,e:科学计数法
using System;  

namespace ConsoleApp1;

internal abstract class Program
{
    private static void Main(string[] args)
    {
        Console.WriteLine("{0:C}",500); //¥500.00
        Console.WriteLine("{0:D4}",500);//0500
        Console.WriteLine("{0,4:D}",500);// 500
        Console.WriteLine("{0:F4}",500.12345);//500.1234
        Console.WriteLine("{0:x}",100860);//189fc
        Console.WriteLine("{0:p3}",0.123460);//12.346%
        Console.WriteLine("{0:n3}",13434732432.123460);//13,434,732,432.123
        Console.WriteLine("{0:e3}",13434732432.123460);//1.343e+010
        Console.WriteLine("{0:e}",13434732432.123460);//1.343473e+010
    }
}

第4章 类型、存储和变量

  • C程序:一组函数和数据类型
  • C++程序:一组函数和类
  • C#程序:一组函数和类型声明;用命名空间将类型声明分组
  • 类型由成员构成,成员类型包括数据成员和函数成员

预定义类型

数值类型不具有布尔意义

预定义类型:

  • object:所有其他类型的基类
  • string:Unicode字符数组
  • dynamic:使用动态语言编写程序时使用
  • 简单类型
    • 非数值类型
      • bool:必须为true或false
      • char:Unicode字符类型,\x0000至\xffff
    • 数值类型
      • 浮点数:
        • float
        • double
        • decimal:可以准确的表示分数
      • 整数
        • 8位:sbyte(-128至127),byte(0至255)
        • 16位:short(-32768至32767),ushort(0至65535)
        • 32位:int(约正负21亿),uint(0至约42亿)
        • 64位:long,ulong

用户定义类型

  • class 类
  • struct 结构
  • array 数组
  • enum 枚举
  • delegate 委托
  • interface 接口

值类型和引用类型

  • 值类型只需要一段单独的内存用于存储实际的数据
  • 引用类型需要两段数据
    • 第一段存储实际的数据,总是位于堆中
    • 第二段是一个引用,指向数据在堆中的存放位置

正文完
 0
评论(没有评论)