C# 程序结构
一个 C# 程序主要包括以下部分:
命名空间声明(Namespace declaration)
一个 class
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
注释
C# 文件的后缀为 .cs。
using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
/* 我的第一个 C# 程序*/
Console.WriteLine("Hello World");
Console.ReadKey();
}
}
}
让我们看一下上面程序的各个部分:
- 程序的第一行 using System; - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句。
- 下一行是 namespace 声明。一个 namespace 里包含了一系列的类。HelloWorldApplication 命名空间包含了类 HelloWorld。
- 下一行是 class 声明。类 HelloWorld 包含了程序使用的数据和方法声明。类一般包含多个方法。方法定义了类的行为。在这里,HelloWorld 类只有一个 Main 方法。
- 下一行定义了 Main 方法,是所有 C# 程序的 入口点。Main 方法说明当执行时 类将做什么动作。
- 下一行 /*...*/ 将会被编译器忽略,且它会在程序中添加额外的 注释。
- Main 方法通过语句 Console.WriteLine("Hello World"); 指定了它的行为。
WriteLine 是一个定义在 System 命名空间中的 Console 类的一个方法。该语句会在屏幕上显示消息 "Hello World"。
- 最后一行 Console.ReadKey(); 是针对 VS.NET 用户的。这使得程序会等待一个按键的动作,防止程序从 Visual Studio .NET 启动时屏幕会快速运行并关闭。
以下几点值得注意:
C# 是大小写敏感的。
所有的语句和表达式必须以分号(;)结尾。
程序的执行从 Main 方法开始。
与 Java 不同的是,文件名可以不同于类的名称。
编译 & 执行 C# 程序
使用 Visual Studio.Net 编译和执行 C# 程序,按下面的步骤进行:
启动 Visual Studio。
在菜单栏上,选择 File -> New -> Project。
从模板中选择 Visual C#,然后选择 Windows。
选择 Console Application。
为您的项目制定一个名称,然后点击 OK 按钮。
新项目会出现在解决方案资源管理器(Solution Explorer)中。
在代码编辑器(Code Editor)中编写代码。
点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 Hello World。
您也可以使用命令行代替 Visual Studio IDE 来编译 C# 程序:
打开一个文本编辑器,添加上面提到的代码。
保存文件为 helloworld.cs。
打开命令提示符工具,定位到文件所保存的目录。
键入 csc helloworld.cs 并按下 enter 键来编译代码。
如果代码没有错误,命令提示符会进入下一行,并生成 helloworld.exe 可执行文件。
接下来,键入 helloworld 来执行程序。
将看到 "Hello World" 打印在屏幕上。
using 关键字
在任何 C# 程序中的第一条语句都是:
using System;
using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。
class 关键字
class 关键字用于声明一个类
C# 中的注释
注释是用于解释代码。编译器会忽略注释的条目。在 C# 程序中,多行注释以 /* 开始,并以字符 */ 终止,如下所示:
/* 这个程序演示
C# 的注释
使用 */
单行注释是用 // 符号表示。例如:
// 这一行是注释
成员变量
变量是类的属性或数据成员,用于存储数据。
成员函数
函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。
实例化一个类
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
在上面的程序中,类 ExecuteRectangle 是一个包含 Main() 方法和实例化 Rectangle 类的类。
标识符
标识符是用来识别类、变量、函数或任何其它用户定义的项目。在 C# 中,类的命名必须遵循如下基本规则:
标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。
标识符中的第一个字符不能是数字。
标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。
标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。
标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
不能与C#的类库名称相同。
C# 关键字
关键字是 C# 编译器预定义的保留字。这些关键字不能用作标识符,但是,如果想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀。
顶级语句(Top-Level Statements)
在 C# 9.0 版本中,引入了顶级语句(Top-Level Statements)的概念,这是一种新的编程范式,允许开发者在文件的顶层直接编写语句,而不需要将它们封装在方法或类中。
特点:
无需类或方法:顶级语句允许你直接在文件的顶层编写代码,无需定义类或方法。
文件作为入口点:包含顶级语句的文件被视为程序的入口点,类似于 C# 之前的 Main 方法。
自动 Main 方法:编译器会自动生成一个 Main 方法,并将顶级语句作为 Main 方法的主体。
支持局部函数:尽管不需要定义类,但顶级语句的文件中仍然可以定义局部函数。
更好的可读性:对于简单的脚本或工具,顶级语句提供了更好的可读性和简洁性。
适用于小型项目:顶级语句非常适合小型项目或脚本,可以快速编写和运行代码。
与现有代码兼容:顶级语句可以与现有的 C# 代码库一起使用,不会影响现有代码。
传统 C# 代码 - 在使用顶级语句之前,你必须像这样编写一个 C# 程序:
using System;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
使用顶级语句的 C# 代码 - 使用顶级语句,可以简化为:
using System;
Console.WriteLine("Hello, World!");
顶级语句支持所有常见的 C# 语法,包括声明变量、定义方法、处理异常等。
using System;
using System.Linq;
// 顶级语句中的变量声明
int number = 42;
string message = "The answer to life, the universe, and everything is";
// 输出变量
Console.WriteLine($"{message} {number}.");
// 定义和调用方法
int Add(int a, int b) => a + b;
Console.WriteLine($"Sum of 1 and 2 is {Add(1, 2)}.");
// 使用 LINQ
var numbers = new[] { 1, 2, 3, 4, 5 };
var evens = numbers.Where(n => n % 2 == 0).ToArray();
Console.WriteLine("Even numbers: " + string.Join(", ", evens));
// 异常处理
try
{
int zero = 0;
int result = number / zero;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Error: " + ex.Message);
}
注意事项
文件限制:顶级语句只能在一个源文件中使用。如果在一个项目中有多个使用顶级语句的文件,会导致编译错误。
程序入口:如果使用顶级语句,则该文件会隐式地包含 Main 方法,并且该文件将成为程序的入口点。
作用域限制:顶级语句中的代码共享一个全局作用域,这意味着可以在顶级语句中定义的变量和方法可以在整个文件中访问。
顶级语句在简化代码结构、降低学习难度和加快开发速度方面具有显著优势,特别适合于编写简单程序和脚本。