C# 基础语法

环境装好后,我们来系统过一遍 C# 的基础语法。这一章不涉及复杂概念,只讲程序"长什么样"——结构、命名空间、注释、关键字。读完你就能看懂任何 C# 代码的大致框架。

一、C# 程序的基本结构

一个完整的传统 C# 程序包含四部分:using 引入、namespace 命名空间、class 类、Main 入口方法。看这个例子:

using System;              // 引入命名空间
using System.Collections.Generic;

namespace MyGame           // 命名空间(类似 Java 的 package)
{
    class Program          // 类
    {
        static void Main(string[] args)   // 主入口
        {
            Console.WriteLine("Hello, C#!");
        }
    }
}

几个要点:

二、顶级语句(C# 9+ 简化写法)

新版 C# 引入了顶级语句:整个 Program.cs 可以只有几行代码,编译器自动生成 Program 类与 Main 方法。这对初学者非常友好:

// C# 9+ 顶级语句:可省略 class/using/Main
// 默认 ImplicitUsings 开启,常用 using 自动添加
Console.WriteLine("Hello, C#!");

// 整个文件就是 Main 方法体,return 即退出
return 0;

本系列示例大部分用顶级语句书写,简洁直观。等学完高级概念,你再回头理解"它本质就是 Main 方法"即可。

三、命名空间

命名空间用来避免命名冲突。比如你写了一个 UserService,微软的 BCL 里也有同名类——只要命名空间不同就能共存。

namespace MyApp.Services
{
    public class UserService { /* ... */ }
    public class OrderService { /* ... */ }
}

// C# 10+ 文件范围命名空间(推荐,少一层缩进)
namespace MyApp.Services;

public class UserService { /* ... */ }
public class OrderService { /* ... */ }

访问其他命名空间的内容,要么 using 引入,要么写全名 MyApp.Services.UserService。命名空间可以嵌套,但文件范围命名空间(C# 10+)只能有一个、必须在文件第一行(不含 using)。

四、注释

C# 的注释和 C/Java/JS 几乎一样,但多了一种特殊的 XML 文档注释:

// 单行注释:双斜杠,到行尾

/* 多行注释:用斜杠星号包裹,
   可以跨多行 */

/// <summary>
/// XML 文档注释:三斜杠开头
/// 编译器会生成 API 文档,IDE 智能提示会读取
/// </summary>
/// <param name="name">用户名</param>
public void Greet(string name) { }

三斜杠 /// 注释会被编译器读取,生成 API 文档(类似 Java 的 Javadoc)。在 VS/VS Code 里,光标悬停方法上显示的智能提示就来自这里。写公共 API 时强烈建议加 XML 注释。

五、分号与花括号

C# 语句必须以分号结尾;代码块用花括号包裹(这点和 C/Java 一样,和 Python 的缩进不同)。花括号风格通常是左括号不换行(Allman 风格在 C# 社区也有人用,但官方示例基本是 K&R)。

// ✅ 正确:左花括号不换行(C# 惯例)
if (x > 0)
{
    DoSomething();
}

// ❌ C# 里这种写法少见(不像 Java/JS 流行风格)
if (x > 0)
{
    DoSomething();
}

// 语句必须以分号结尾
int a = 1;
Console.WriteLine(a);

注意 C# 不像 Go 那样强制左括号同行——但社区习惯就是这样,跟着主流写就对了。VS/VS Code 默认格式化工具会自动整理。

六、大小写敏感

C# 是大小写敏感的语言。nameName 是两个不同的标识符。命名规范很重要:

遵守这套规范能让你写的代码"看起来像 C# 该有的样子",团队协作顺畅。

七、C# 的关键字

C# 大约有 80 个保留关键字(contextual keywords 不算在内),不能用作标识符。常用的有:

看到不熟的关键字不用慌,后续每个都会单独讲。初学者常用的就 30 来个。

八、上下文关键字(Contextual Keywords)

C# 还有一类上下文关键字,只在特定语法里有意义,其他位置可以当变量名。比如 varvaluepartialselectwheregetsetorderbygroupby。在 LINQ 里它们大量出现,但作为变量名也合法。

九、入口与命令行参数

如果需要读取命令行参数,Main 方法可以带 string[] args:

// 传统写法
class Program
{
    static void Main(string[] args)
    {
        foreach (var arg in args)
            Console.WriteLine(arg);
    }
}

// 顶级语句下,args 直接是顶级变量
foreach (var arg in args)
    Console.WriteLine(arg);

运行 dotnet run -- a b c(注意 -- 分隔符)会把 a b c 作为参数传入。

小结

这一章你了解了 C# 程序的整体骨架:using → namespace → class → Main;知道了注释和命名空间规则;记住了关键字的存在和大致分类。下一篇我们看 C# 的变量声明——程序操作数据的基本单位。

← 上一篇 C# 环境安装

下一篇 C# 变量

✈️💬