Logo
Section 1 / 11

C# 程序的结构

了解C#程序的结构。

导入

C# 程序的结构

了解C#程序的结构。

语句和代码块

C# 代码文件是扩展名为 .cs 的文本文件。它们包含将被编译为 中间语言(IL) 的指令。

语句 是 C# 源代码的基本构建单元。一条语句可以是一些操作,例如算术运算、方法调用或变量声明与赋值。

1Console.WriteLine("这是一条语句。");

与 C 和 C++ 一样,每条语句都必须以分号(;)结尾。省略分号会导致编译错误,程序将无法编译为中间语言(IL)。

我们可以将一组指令组合成代码块。要创建代码块,只需将语句用大括号包围起来。

1{ 2 Console.WriteLine("我位于一个代码块中!"); 3 Console.WriteLine("我也是。"); 4}

代码块可以包含其他代码块。本质上,class 和 method 都可以看作是代码块。一个 class 包含方法,而一个方法在其大括号内包含具体的操作指令。

1using System; 2 3class FirstProgram 4{ 5 static void Main() 6 { 7 Console.WriteLine("Hello, World!"); 8 9 { 10 Console.WriteLine("位于代码块内的代码"); 11 { 12 Console.WriteLine("位于嵌套代码块内的代码"); 13 } 14 } 15 } 16}

从 C# 9.0 开始,我们可以编写顶层程序。这意味着我们无需再声明 Main() 方法,也不必将其放入某个类中。编译器会自动为我们生成这些内容。

1using System; 2 3Console.WriteLine("我是一个顶层程序");

大括号和代码块在使用循环和方法等结构时将变得更为重要。

Main() 方法

任何 .NET 程序都必须包含一个 Main() 方法,除非它是一个被其他应用程序使用的类库。所有可执行程序都有一个 Main() 方法,作为应用程序的入口点。

让我们进行一些实验:尝试移除代码中的 Main() 方法,或将其重命名,然后运行程序。

将以下代码中的 Main() 方法重命名为任意合法名称,然后尝试运行程序。

1using System; 2 3class FirstProgram 4{ 5 static void Hello() 6 { 7 Console.WriteLine("没有 Main 方法的可执行 .NET 应用程序无法编译"); 8 } 9}

注意以下输出:

1错误 CS5001:程序 'main.exe' 不包含适合用作入口点的静态 'Main' 方法

在查找 Main() 方法失败后,编译器生成了此错误。

大小写敏感性

C# 是大小写敏感的。这意味着,根据字符的大小写不同,相同的名称可能代表不同的类、方法或变量。

例如,在下面的代码中,我们有一个名为 Program 的类。我们可以在其下方再定义另一个类,命名为 program。不会产生错误,因为由于大小写敏感性,这两个类并不相同。

1using System; 2 3class Program 4{ 5 static void Main() 6 { 7 Console.WriteLine("我是 'Program' 类"); 8 program.Print(); 9 } 10} 11 12public class program 13{ 14 public static void Print() 15 { 16 Console.WriteLine("我是 'program' 类。不是 'Program'"); 17 } 18}

注释

注释是源代码的重要组成部分。它们在编译过程中会被忽略,也不会出现在生成的中间语言(IL)中。尽管如此,它们被频繁使用,因为它们能提高代码的可读性,促进团队协作。

下面的代码片段展示了 C# 中不同类型的注释。

1using System; 2 3/* 4 一个向控制台输出信息的程序。 5*/ 6class Program 7{ 8 9 // Main 方法(程序入口点) 10 static void Main() 11 { 12 Console.WriteLine("我是 'Program' 类"); 13 program.Print(); // 这里我们调用了另一个类中的方法 14 } 15} 16 17public class program 18{ 19 public static void Print() 20 { 21 Console.WriteLine("我是 'program' 类。不是 'Program'"); 22 } 23}

如上所示,我们可以通过在 /* 和 */ 之间添加文本来编写多行注释。

1/* 2 我是多行注释。 3 注释的第二行。 4*/

// 表示单行注释的开始。// 后面的所有文本都会被视为注释,编译器会忽略它们。

1// 我是单行注释。

入门

变量和数据类型