基本语法
程序结构
一个经典的 C# 程序由 using 指令、namespace 命名空间、class 类和 Main 方法组成。
- using 指令:引入命名空间,避免每次写完整路径
- namespace:组织代码的逻辑容器,防止命名冲突
- class:C# 是面向对象语言,所有代码必须放在类中
- Main 方法:程序入口点,运行时从这里开始执行
示例
CSHARP
using System;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
TEXT
Hello, World!
语句与分号
C# 中每条语句必须以分号 ; 结尾。分号是语句的终止符,告诉编译器一条指令到此结束。缺少分号会导致编译错误。
示例
CSHARP
using System;
namespace StatementDemo
{
class Program
{
static void Main()
{
int x = 10;
int y = 20;
int sum = x + y;
Console.WriteLine(sum);
}
}
}
TEXT
30
代码块与大括号
代码块用大括号 { } 包裹,将多条语句组合为一个逻辑单元。命名空间、类、方法、条件语句和循环等都需要使用代码块。大括号可以嵌套使用。
CSHARP
namespace Outer
{
namespace Inner
{
class MyClass
{
void MyMethod()
{
if (true)
{
Console.WriteLine("nested block");
}
}
}
}
}
缩进与代码风格
良好的缩进让代码更易阅读。C# 社区推荐使用 4 个空格 缩进,大括号风格有两种:
- Allman 风格:大括号独占一行(C# 常见)
- K&R 风格:左大括号跟在上一行末尾
CSHARP
class StyleA
{
void Method()
{
Console.WriteLine("Allman style");
}
}
class StyleB {
void Method() {
Console.WriteLine("K&R style");
}
}
💡 Visual Studio 默认使用 Allman 风格,保持项目内风格统一最重要。
Console 输出
Console.Write 和 Console.WriteLine 用于向控制台输出文本:
- Console.Write:输出内容后不换行
- Console.WriteLine:输出内容后自动换行
示例
CSHARP
using System;
namespace ConsoleDemo
{
class Program
{
static void Main()
{
Console.Write("Hello");
Console.Write(" ");
Console.WriteLine("World");
Console.WriteLine("Second line");
}
}
}
TEXT
Hello World
Second line
转义字符
在字符串中,某些字符需要用反斜杠 \ 转义才能正确表示:
| 转义字符 | 含义 |
|---|---|
\n |
换行 |
\t |
制表符 |
\\ |
反斜杠 |
\" |
双引号 |
\' |
单引号 |
示例
CSHARP
using System;
namespace EscapeDemo
{
class Program
{
static void Main()
{
Console.WriteLine("Line1\nLine2");
Console.WriteLine("Name\tAge");
Console.WriteLine("Path: C:\\Users\\Doc");
Console.WriteLine("He said \"Hello\"");
}
}
}
TEXT
Line1
Line2
Name Age
Path: C:\Users\Doc
He said "Hello"
⚠️ 如果字符串中包含大量反斜杠(如文件路径),可以使用逐字字符串
@"...",其中的 \ 不再需要转义。
注释
注释是给开发者看的说明文字,编译器会忽略它们。C# 有三种注释方式:
//:单行注释,从//到行末的内容被忽略/* */:多行注释,可跨越多行///:XML 文档注释,可生成 API 文档
CSHARP
using System;
namespace CommentDemo
{
class Program
{
static void Main()
{
Console.WriteLine("hello");
Console.WriteLine("world");
/*
Console.WriteLine("skipped");
Console.WriteLine("also skipped");
*/
Console.WriteLine("end");
}
/// <summary>
/// 计算两数之和
/// </summary>
static int Add(int a, int b)
{
return a + b;
}
}
}
TEXT
hello
world
end
📌 XML 文档注释(
///)常用于公共 API,Visual Studio 会在调用时显示这些说明。
顶级语句
从 C# 9 开始支持顶级语句,省略 namespace、class、Main 的模板代码,直接在文件顶层编写逻辑。编译器自动生成入口方法。
示例
CSHARP
using System;
Console.WriteLine("Top-level statement!");
int result = 40 + 2;
Console.WriteLine($"The answer is {result}");
TEXT
Top-level statement!
The answer is 42
ℹ️ 顶级语句只能在项目中的一个文件里使用,多个文件使用会导致编译错误。
文件范围命名空间
从 C# 10 开始支持文件范围命名空间,用 namespace MyApp; 替代传统的块式命名空间,减少一层嵌套:
CSHARP
namespace MyApp;
class Program
{
static void Main()
{
Console.WriteLine("File-scoped namespace");
}
}
等价于:
CSHARP
namespace MyApp
{
class Program
{
static void Main()
{
Console.WriteLine("File-scoped namespace");
}
}
}
✅ 文件范围命名空间使代码更简洁,推荐在新项目中使用。
❓ 常见问题
Q 忘记写分号会怎样?
A 编译器报错,提示缺少分号,错误位置可能在下一行。
Q:using 指令可以写在 namespace 内部吗? A:可以,但通常写在文件顶部,使作用域更清晰。
Q:顶级语句项目中还能定义类吗? A:可以,类定义放在顶级语句之后即可。
Q:文件范围命名空间中能定义多个命名空间吗? A:不能,每个文件只能有一个文件范围命名空间。
📖 小节
- C# 程序由 using、namespace、class、Main 组成
- 每条语句必须以分号结尾
- 代码块用大括号包裹,可嵌套
- Console.Write 不换行,Console.WriteLine 自动换行
- 转义字符用反斜杠引导,逐字字符串
@"..."可避免转义 - 三种注释:单行
//、多行/* */、XML文档/// - 顶级语句(C# 9+)简化入口代码
- 文件范围命名空间(C# 10+)减少嵌套层级
📝 作业
- 编写一个控制台程序,使用 Console.Write 和 Console.WriteLine 输出自己的姓名和年龄
- 使用转义字符在一条 Console.WriteLine 语句中输出三行文本
- 将一个经典程序结构改写为顶级语句版本
- 为一个方法添加 XML 文档注释,包含
<summary>和<param>标签



