多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# C# 语法结构 > 原文: [https://zetcode.com/lang/csharp/lexis/](https://zetcode.com/lang/csharp/lexis/) 像人类语言一样,计算机语言也具有词汇结构。 C# 程序的源代码由令牌组成。 令牌是原子代码元素。 在 C# 中,我们具有注释,变量,字面值,空格,运算符,定界符和关键字。 C# 程序由 Unicode 字符集中的字符组成。 ## C# 注释 注释被人类用来阐明源代码。 C# 中有三种类型的注释。 单行注释,多行注释和 XML 注释。 可以将 XML 注释提取到 HTML 文件。 多行注释用`/* */`字符括起来。 单行注释以两个正斜杠开头。 `Program.cs` ```cs using System; /* This is comments.cs Author: Jan Bodnar ZetCode 2019 */ namespace Comments { // Program starts here class Program { static void Main(string[] args) { Console.WriteLine("This is Comments program"); } } } ``` C# 编译器将忽略注释。 ```cs /* This is comments.cs /* Author: Jan Bodnar */ ZetCode 2019 */ ``` 注释不能嵌套。 上面的代码无法编译。 ## C# 空白字符 C# 中的空格字符用于分隔源文件中的标记。 它还用于提高源代码的可读性。 ```cs int i = 0; ``` 在某些地方需要空格。 例如,在`int`关键字和变量名之间。 在其他地方,禁止使用空格。 它们不能出现在变量标识符或语言关键字中。 ```cs int a=1; int b = 2; int c = 3; ``` 标记之间放置的空间量与 C# 编译器无关。 ## C# 变量 变量是保存值的标识符。 在编程中,我们说我们为变量分配了一个值。 从技术上讲,变量是对存储值的计算机内存的引用。 变量名称可以包含字母数字字符和下划线。 标识符可以以字符或下划线开头。 它可能不能以数字开头。 变量名称区分大小写。 这意味着`Name`,`name`和`NAME`引用了三个不同的变量。 变量名称也不能与语言关键字匹配。 (实际上,如果在关键字前面加上`@`字符,则可以使用关键字作为标识符。但这不是一个好的编程习惯。) ```cs string name23; int _col; Date birth_date; ``` 这些是有效的 C# 标识符。 ```cs string 23name; int %col; Date birth date; ``` 这些是无效的 C# 标识符。 `Program.cs` ```cs using System; namespace Identifiers { class Program { static void Main(string[] args) { string name = "Robert"; string Name = "Julia"; Console.WriteLine(name); Console.WriteLine(Name); } } } ``` 标识符区分大小写。 `Name`和`name`是两个不同的标识符。 在 Visual Basic(C# 语言的表亲)中,这是不可能的。 用这种语言,变量名不区分大小写。 ```cs $ dotnet run Robert Julia ``` 这是程序输出。 ## C# 字面值 字面值是类型的特定值的字面值表示。 字面值类型包括布尔值,整数,浮点数,字符串,字符和日期。 从技术上讲,字面值将在编译时分配一个值,而变量将在运行时分配。 ```cs int age = 29; string nationality = "Hungarian"; ``` 在这里,我们为变量分配了两个字面值。 数字 29 和字符串`"Hungarian"`是字面值。 `Program.cs` ```cs using System; namespace Literals { class Program { static void Main(string[] args) { bool sng = true; string name = "James"; string job = null; double weight = 68.5; DateTime born = DateTime.Parse("November 12, 1987"); Console.WriteLine("His name is {0}", name); if (sng) { Console.WriteLine("He is single"); } else { Console.WriteLine("He is in a relationship"); } Console.WriteLine("His job is {0}", job); Console.WriteLine("He weighs {0} kilograms", weight); Console.WriteLine("He was born in {0}", string.Format("{0:yyyy}", born)); } } } ``` 在上面的示例中,我们有一些字面值。 `bool`字面值可能具有值`true`或`false`。 `"James"`是字符串字面值。 `null`代表任何数据类型的默认值。 数字 23 是`Integer`字面值。 数字 68.5 是浮点字面值。 最后,1987 年 11 月 12 日是日期字面值。 ```cs $ dotnet run His name is James He is single His job is He weighs 68.5 kilograms He was born in 1987 ``` 这是程序的输出。 ## C# 运算符 运算符是用于对某个值执行操作的符号。 表达式中使用运算符来描述涉及一个或多个操作数的运算。 ```cs + - * / % ^ & | ! ~ = += -= *= /= %= ^= ++ -- == != < > &= >>= <<= >= <= || && >> << ?: ``` 这是 C# 运算符的部分列表。 我们将在本教程的后面部分讨论运算符。 ## C# 分隔符 分隔符是一个或多个字符的序列,用于指定纯文本或其他数据流中单独的独立区域之间的边界。 ```cs [ ] ( ) { } , : ; ``` ```cs string language = "C#"; ``` 双精度字符用于标记字符串的开头和结尾。 分号(`;`)字符用于结束每个 C# 语句。 ```cs Console.WriteLine("Today is {0}", DateTime.Today.ToString("M/d")); ``` 括号(圆括号)用于标记方法签名。 签名由方法参数组成。 圆括号用于表示求值值。 ```cs int[] array = new int[5] {1, 2, 3, 4, 5}; ``` 方括号`[]`用于表示数组类型。 它们还用于访问或修改数组元素。 圆括号`{}`也用于初始化数组。 花括号也用于变量插值或包围方法或类的主体。 ```cs int a, b, c; ``` 逗号字符可用于在同一行代码上使用多个声明。 ## C# 关键字 关键字是 C# 语言中的保留字。 关键字用于在计算机程序中执行特定任务。 例如,定义变量,执行重复性任务或执行逻辑操作。 C# 包含丰富的关键字。 其中许多内容将在本教程中进行解释。 关键字包括`if`,`else`,`for`,`while`,`base`,`false`,`float`,`catch`,`this`等。 `Program.cs` ```cs using System; namespace Keywords { class Program { static void Main(string[] args) { int i; for(i = 0; i<= 5; i++) { Console.WriteLine(i); } } } } ``` 在上面的示例中,我们使用了几个关键字。 `using`,`public`,`static`,`void`,`int`和`for`是 C# 关键字。 ## C# 约定 约定是程序员在编写源代码时遵循的最佳实践。 每种语言可以有自己的约定集。 约定不是严格的规则; 它们只是编写高质量代码的建议。 我们提到了许多 C# 程序员都认可的一些约定。 (并且通常也被其他程序员使用)。 * 类,接口和枚举以大写字母开头。 * 接口名称以 I 字母开头。 * 注释放在单独的行中,而不是在代码行的末尾。 * 方法名称以大写字母开头。 * 每行仅放置一个语句或声明。 * 标识符易于阅读且有意义。 * 标识符使用 Pascal 大小写编写,例如随后的每个单词都以大写字母开头。 * 同时使用`public`关键字和`static`关键字之前。 * `Main()`方法的参数名称称为`args`。 * 常量以大写形式编写。 * 代码块中的大括号从新行开始。 在 C# 教程的这一部分中,我们介绍了 C# 语言的基本词汇。