C# 程序由一个或多个文件组成。 每个文件都包含零个或多个命名空间。 命名空间包含类、结构、接口、枚举和委托或其他命名空间等类型。 下面的示例是包含所有这些元素的 C# 程序的框架。
using System;
Console.WriteLine("Hello world!");
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
namespace YourNestedNamespace
{
struct YourStruct
{
}
}
}
前面的示例对程序的入口点使用 顶级语句。 只有一个文件可以有顶级语句。 程序的入口点是该文件中程序文本的第一个文本行。 在本例中,该值为 Console.WriteLine("Hello world!");
。
还可以创建一个名为 Main
的静态方法作为程序的入口点,如以下示例所示:
// A skeleton of a C# program
using System;
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
namespace YourNestedNamespace
{
struct YourStruct
{
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello world!");
}
}
}
在这种情况下,程序从方法的 Main
左大括号开始,即 Console.WriteLine("Hello world!");
生成和运行 C# 程序
C# 是 一种已编译 的语言。 在大多数 C# 程序中,使用 dotnet build
命令将一组源文件编译为二进制包。 然后,使用 dotnet run
命令运行程序。 (可以简化此过程,因为 dotnet run
会在必要时编译程序后再运行它。)这些工具支持丰富的配置选项和命令行开关。 . dotnet
NET SDK 中包含的命令行接口(CLI)提供了许多 工具来 生成和修改 C# 文件。
从 C# 14 和 .NET 10 开始,可以创建 基于文件的程序,从而简化 C# 程序的生成和运行。 使用 dotnet run
命令运行包含在单个 *.cs
文件中的程序。 例如,如果以下代码片段存储在名为 hello-world.cs
的文件中,可以通过键入 dotnet run hello-world.cs
运行它。
#!/usr/local/share/dotnet/dotnet run
Console.WriteLine("Hello, World!");
程序的第一行包含 Unix shell 的 #!
序列。 CLI 的dotnet
位置可能因不同的发行版而异。 在任何 Unix 系统上,如果对 C# 文件设置了 execute (+x
) 权限,则可以从命令行运行 C# 文件:
./hello-world.cs
这些程序的源必须是单个文件,否则所有 C# 语法都有效。 可以将基于文件的程序用于小型命令行实用工具、原型或其他试验。 基于文件的程序允许 预处理器指令 配置生成系统。
表达式和语句
C# 程序是使用 表达式 和 语句生成的。 表达式生成值,语句执行作:
表达式是计算为单个值的值、变量、运算符和方法调用的组合。 表达式生成结果,可在预期值的位置使用。 以下示例是表达式:
42
(文本值)x + y
(算术运算)Math.Max(a, b)
(方法调用)condition ? trueValue : falseValue
(条件表达式)new Person("John")
(对象创建)
语句是执行操作的完整指令。 语句不返回值;相反,它们控制程序流、声明变量或执行作。 以下示例是陈述:
int x = 42;
(申报单)Console.WriteLine("Hello");
(表达式语句 - 封装方法调用表达式)if (condition) { /* code */ }
(条件语句)return result;
(return 语句)
关键区别:表达式计算结果为值,而语句执行操作。 某些构造(如方法调用)可以是两者。 例如,Math.Max(a, b)
在int result = Math.Max(a, b);
中时是一个表达式,但单独写成Math.Max(a, b);
时,它是一条表达式语句。
有关语句的详细信息,请参阅 语句。 有关表达式主体成员和其他表达式特性的详细信息,请参阅表达式主体成员。
相关部分
在基本原理指南的 类型 部分中了解这些程序元素: