C# 学习之路(C# 编程概述)

C# 学习之路(C# 编程概述)


前记:C# 学习之路,是我跟着 C# 图解教程(第五版) 学习的笔记,每一章都会有一篇笔记发出,小标题会对应书本的章节标题。

.NET 6 和之前的版本相比在顶级语句方面有很大的变化,如果不知道有不清楚,可看这篇博客:在 .NET 6 中 C# 控制台应用模板生成的顶级语句变化

  • 初识 C# 程序

using System; //告诉编译器这个程序需要使用 System 命名空间的类型

namespace chapter3 // 声明一个名为 chapter3 的命名空间
{
    class Program // 声明一个名为 Program 的类
    {
        static void Main() // 声明一个 Main 方法作为 Program 的成员
        {
            Console.WriteLine("Hello, World!"); // 在终端输出 Hello, World!
            // 这一条语句使用命名空间 System 中一个名为 Console 的类中的 WriteLine 方法将信息显示在终端上。
        }
    }
}

C# 程序由一个或多个类型声明组成,程序中的类型可以以任何顺序声明。

命名空间是与某个名称相关联的一组类型声明。

  • 标识符

标识符是一种用来命名变量、方法、参数的字符串。

  1. 标识符的首字母可以是 英文字母(a-z)(A-Z)下划线(_)@

  2. 数字不能放在首位

  3. @ 只能放在首位(不推荐使用)

标识符区分大小,一般采用 驼峰式命名规则,例如:TotalCycleCount

  • 关键字

关键字是用来定义 C# 语言的字符串记号。

  1. 关键字不能被用作标识符,除非以 @ 字符开头
  2. 所有的 C# 关键字全部由小写字母组成
  3. 关键字中有一类叫做 上下文关键字上下文关键字是仅在特定的语言结构中充当关键字。关键字与上下文关键字的区别在于,关键字不能被用作标识符,而上下文关键字可以在代码的某些位置被用作标识符

图片来自:微软 C# 指南

C# 学习之路(C# 编程概述)_第1张图片

C# 学习之路(C# 编程概述)_第2张图片

  • Main 程序的起始点

每一个 C# 程序必须有一个类带有 Main 方法(函数)(.NET 6.0 中也有 Main 方法,只是被隐藏了,可看博客:在 .NET 6 中 C# 控制台应用模板生成的顶级语句变化)

  • Main 首字母必须大写
  • 语句

C# 的语句和 C、C++ 的语句非常类似。

块:一个由成对大括号包围的 0 条或多条语句的序列,在语法上相当于一条语句。如下所示

{
    ......
}
  • 从程序中输出文本

控制台窗口是一种简单的命令提示窗口,允许程序显示文本并从键盘接收输入。 BCL(Base Class Library,基类库)提供一个名为 Console 的类(在 System 命名空间中),该类包含了将数据输入和输出到控制台窗口的方法。

// Write 是 Console 类的成员,把文本字符串发送到程序的控制台窗口
// Write 不会换行
Console.Write("This is trivial text.");
Console.Write("This is trivial text.");
// 输出为
//This is trivial text.This is trivial text.
// WriteLine 也是 Console 类的成员,功能和 Write 相同,但会在每个输出字符串的结尾添加换行
Console.WriteLine("This is trivial text.");
Console.WriteLine("This is trivial text.");
// 输出为
//This is trivial text.
//This is trivial text.
  • 格式字符串

WriteWriteLine 语句的常规新式中可以有一个以上的参数。

  1. 如果不止一个参数,参数之间用逗号分隔

  2. 第一个参数必须总是字符串,称为格式字符串。格式字符串可以包含替代标记

    2.1 替代标记在格式字符串中标出位置,在输出串中该位置将用一个值来替代

    2.2 替代标记由一个整数及括住它的一对大括号组成,其中整数就是替换值的数字位置,跟着格式字符串的参数称为替换值,编号从 0 开始

语法如下:

Console.WriteLine(格式字符串(含替代标记),替代值0,替代值1,......);

Console.WriteLine("Two sample integers are {0} and {1}.", 3, 6);
// 双引号包含的为 格式字符串 ,{0} 和 {1} 为替代标记,3 和 6 为替换值

C# 6.0 引入了一种字符串插值语法,通过直接在替代标记内插入变量名实现。

实际上,替代标记告诉编译器这个变量名将被视为一个变量,而不是字符串字面量,前提就是在字符串前面加上 $ 符号。

int val1 = 3;
int val2 = 6;
Console.WriteLine("Two sample integers are {val1} and {val2}.");
  • 多重标记和值

在 C# 中,可以使用任意数量的替代标记和任意数量的值。

  1. 值可以以任何顺序使用
  2. 只可以在格式字符串中替换任意次
  3. 标记不能试图引用超出替换列表长度以外位置的值。如果引用,不会产生编译错误,但是会产生运行时错误
Console.WriteLine("Three integers are {1}, {0} and {1}.", 3, 6);
// 运行时错误
Console.WriteLine("Three integers are {1}, {0} and {2}.", 3, 6);
// 位置2 不存在

C# 学习之路(C# 编程概述)_第3张图片

  • 格式化数字字符串

很多的时候,我们更希望以一种更为合适的格式将数字本文字符串输出。于是,就有了格式化字符串

Console.WriteLine("The value: {0}", 500); 
Console.WriteLine("The value: {0:C}", 500); // 格式化为货币

// 输出
//The value: 500
//The value: ¥500.00

两条语句的区别在于,格式项以格式说明符包含了额外的信息。大括号内的格式声明符的语法由三个字段组成:索引号对齐说明符格式字段。语法如下:

{index,alignment:format}

index:必需,指定列表中的某一项

alignment:可选(对其说明符),指定字段宽度,以及左对齐还是右对齐

:format:可选(格式字段),指定项的格式

  1. 对齐说明符:对齐说明符表示字段的最小宽度。

    1.1 可以是一个正整数(右对齐),也可以是一个负整数(左对齐)。

    1.2 使用逗号来与索引号分离

    Console.WriteLine("|{0, 10}|",500);
    Console.WriteLine("|{0, -10}|",500);
    // 输出
    |       500|
    |500       |
    
  2. 格式字段:指定数字应该以哪种新式表示。

    2.1 冒号后必须紧跟着格式说明符,中间不能有空格

    2.2 格式说明符是一个字符字符

    2.3 精度说明符是可选的

    A:xx

    A:表示格式说明符

    xx:精度说明符(可选),由1~2个数字组成

    Console.WriteLine("{0:F4}", 12.345678);
    // 保留小数点后 4 位
    // 12.3457
    
  • 标准数字格式说明符
格式说明符 “属性” 说明
“C”或“c” 货币 结果:货币值。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认值精度说明符:由 NumberFormatInfo.CurrencyDecimalDigits 定义。 更多信息:货币(“C”)格式说明符。
“D”或“d” 十进制 结果:整型数字,负号可选。 受以下类型支持:仅限整型类型。 精度说明符:数字位数下限。 默认值精度说明符:所需数字位数下限。 更多信息:十进制(“D”)格式说明符。
“E”或“e” 指数(科学型) 结果:指数表示法。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认值精度说明符:6. 更多信息:指数(“E”)格式说明符。
“F”或“f” 定点 结果:整数和十进制小数,负号可选。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认值精度说明符:由 NumberFormatInfo.NumberDecimalDigits 定义。 更多信息:定点(“F”)格式说明符。
“G”或“g” 常规 结果:更紧凑的定点表示法或科学记数法。 受以下类型支持:所有数值类型。 精度说明符:有效位数。 默认值精度说明符:具体取决于数值类型。 更多信息:常规(“G”)格式说明符。
“N”或“n” 数字 结果:整数和十进制小数、组分隔符和十进制小数分隔符,负号可选。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认值精度说明符:由 NumberFormatInfo.NumberDecimalDigits 定义。 更多信息:数字(“N”)格式说明符。
“P”或“p” 百分比 结果:数字乘以 100 并以百分比符号显示。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认值精度说明符:由 NumberFormatInfo.PercentDecimalDigits 定义。 更多信息:百分比(“P”)格式说明符。
“R”或“r” 往返过程 结果:可以往返至相同数字的字符串。 受以下类型支持:Single、Double 和 BigInteger。 注意:建议只用于 BigInteger 类型。 对于 Double 类型,请使用 “G17”;对于 Single 类型,请使用 “G9”。 精度说明符:已忽略。 更多信息:往返过程(“R”)格式说明符。
“X”或“x” 十六进制 结果:十六进制字符串。 受以下类型支持:仅限整型类型。 精度说明符:结果字符串中的位数。 有关详细信息,请参阅十六进制(“X”)格式说明符。
  • 注释

类型 开始标志 结束标志 描述
单行注释 // 从标记开始到该行行尾的文本被编译器忽略
带分隔符的注释 /* */ 从开始标记到结束标记之间的文本被编译器忽略
文档注释 /// 这种类型的注释包含 XML 文本,可以使用工具生成程序文档
  1. 不能嵌套带分隔符的注释
  2. 对于单行注释,一直到行结束都有效
  3. 对于带分隔符的注释,直至遇到第一个结束分隔符都有效

你可能感兴趣的:(C#,c#,学习,开发语言)