C# 学习之路(C# 编程概述)
前记:C# 学习之路,是我跟着
C# 图解教程(第五版)
学习的笔记,每一章都会有一篇笔记发出,小标题会对应书本的章节标题。
.NET 6
和之前的版本相比在顶级语句方面有很大的变化,如果不知道有不清楚,可看这篇博客:在 .NET 6 中 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# 程序由一个或多个类型声明组成,程序中的类型可以以任何顺序声明。
命名空间是与某个名称相关联的一组类型声明。
标识符是一种用来命名变量、方法、参数的字符串。
标识符的首字母可以是
英文字母(a-z)(A-Z)
、下划线(_)
、@
数字不能放在首位
@
只能放在首位(不推荐使用)标识符区分大小,一般采用
驼峰式命名规则
,例如:TotalCycleCount
关键字是用来定义 C# 语言的字符串记号。
- 关键字不能被用作标识符,除非以 @ 字符开头
- 所有的 C# 关键字全部由小写字母组成
- 关键字中有一类叫做
上下文关键字
,上下文关键字是仅在特定的语言结构中充当关键字。关键字与上下文关键字的区别在于,关键字不能被用作标识符,而上下文关键字可以在代码的某些位置被用作标识符图片来自:微软 C# 指南
每一个 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.
Write
和WriteLine
语句的常规新式中可以有一个以上的参数。
如果不止一个参数,参数之间用逗号分隔
第一个参数必须总是字符串,称为格式字符串。格式字符串可以包含替代标记
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# 中,可以使用任意数量的替代标记和任意数量的值。
- 值可以以任何顺序使用
- 只可以在格式字符串中替换任意次
- 标记不能试图引用超出替换列表长度以外位置的值。如果引用,不会产生编译错误,但是会产生运行时错误。
Console.WriteLine("Three integers are {1}, {0} and {1}.", 3, 6);
// 运行时错误
Console.WriteLine("Three integers are {1}, {0} and {2}.", 3, 6);
// 位置2 不存在
很多的时候,我们更希望以一种更为合适的格式将数字本文字符串输出。于是,就有了格式化字符串。
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.2 使用逗号来与索引号分离
Console.WriteLine("|{0, 10}|",500); Console.WriteLine("|{0, -10}|",500); // 输出 | 500| |500 |
格式字段:指定数字应该以哪种新式表示。
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 文本,可以使用工具生成程序文档
- 不能嵌套带分隔符的注释
- 对于单行注释,一直到行结束都有效
- 对于带分隔符的注释,直至遇到第一个结束分隔符都有效