Skip to content

C# - 首页

欢迎阅读 C# 权威指南!本教程专为初学者和经验丰富的开发人员设计,重点介绍现代 C#、强大的 .NET 平台以及构建健壮、高性能应用程序的最佳实践。

C#(发音为“C-Sharp”)是一种现代的、面向对象的、类型安全的编程语言。C# 由微软开发,由 Anders Hejlsberg 领导,运行在 .NET 平台上,这是一个免费、开源、跨平台的框架,用于构建各种类型的应用程序。借助 .NET,您可以使用 C# 来创建:

  • Web 应用程序: 使用 ASP.NET Core 和 Blazor 构建可扩展的 Web API 和 Web UI。
  • 桌面应用程序: 使用 .NET MAUI 和 WPF 为 Windows、macOS 和 Linux 构建原生桌面应用。
  • 云原生应用: 构建高度可扩展的云端微服务和无服务器函数。
  • 游戏开发: 流行游戏引擎 Unity 的首选语言。
  • 移动应用: 使用 .NET MAUI 构建跨平台的 iOS 和 Android 应用。
  • AI 和机器学习: 使用 ML.NET 将 AI 集成到您的应用程序中。
  • 对初学者友好: 从最基础的知识开始,逐步深入到高级主题。
  • 现代 C# 特性: 涵盖顶级语句(top-level statements)、字符串插值(string interpolation)和异步编程(asynchronous programming)等现代语法。

为什么在 2025 年及以后学习 C#?

Section titled “为什么在 2025 年及以后学习 C#?”
  • 高性能: C# 和 .NET 以其卓越的性能而闻名,通常可以与 C++ 等原生语言媲美。
  • 统一平台: 现代 .NET 平台允许您使用单一代码库和技能集为 Web、移动、桌面和云构建应用。
  • 生产力: 丰富的标准库、庞大的包生态系统(NuGet)以及 Visual Studio 和适用于 VS Code 的 C# Dev Kit 等强大工具使开发快速高效。
  • 开源与跨平台: 在 Windows、macOS 和 Linux 上开发和部署您的 C# 应用程序。

虽然您可以在这里运行代码,但对于实际项目,您需要搭建本地环境。这很简单:

  • 安装 .NET SDK: 从微软官方网站 (dotnet.microsoft.com) 下载最新的 .NET SDK。它包含编译器(compiler)、运行时(runtime)和 dotnet 命令行界面(CLI)。
  • 选择代码编辑器: Visual Studio 2022(Windows)是首选的集成开发环境(IDE)。而带有 C# Dev Kit 扩展的 Visual Studio Code 则是一个很棒的、轻量级且跨平台的替代方案。

但现在,您无需安装任何东西。让我们开始编写一些代码吧!

您的第一个 C# 程序:“Hello, World!”

Section titled “您的第一个 C# 程序:“Hello, World!””

传统上,C# 程序需要相当多的样板代码。现代 C# 借助顶级语句(top-level statements)使其变得简单得多。

// 现代 C# (使用顶级语句,C# 9 起可用)
// 点击“运行”查看输出!
Console.WriteLine("Hello, Modern C# World!");

了解顶级语句所隐藏的结构是很有用的。上面的代码可以扩展为:

  1. using System;:导入 System 命名空间(namespace),其中包含 Console 等基本类(class)。
  2. class Program:定义程序的代码容器。
  3. static void Main(string[] args):C# 应用程序的官方入口点。
  4. Console.WriteLine(...):一个将一行文本打印到控制台(console)的方法(method)。

让我们声明一些变量。请注意使用字符串插值(string interpolation,$...)来格式化字符串。这是比字符串拼接(string concatenation,+)更现代且首选的方式。

string name = "Alice";
int age = 30;
decimal salary = 75_000.50m; // decimal 字面量使用 'm' 后缀
bool isEmployed = true;
// 现代方式:字符串插值
Console.WriteLine($"Name: {name}");
Console.WriteLine($"Age: {age}");
Console.WriteLine($"Salary: {salary:C}"); // ':C' 将其格式化为货币
Console.WriteLine($"Is Employed: {isEmployed}");
类型用途示例
int整数int score = 100;
double浮点数(通用)double pi = 3.14159;
decimal高精度财务计算decimal price = 19.99m;
string字符序列string message = "Hello";
bool布尔值bool isValid = true;

控制流语句指导程序的执行路径。

使用 if-else 实现健壮的条件逻辑

Section titled “使用 if-else 实现健壮的条件逻辑”

这是安全处理用户输入的方法。与 Convert.ToInt32() 在无效输入时会崩溃不同,最佳实践是使用 int.TryParse()。

Console.Write("Enter your age: ");
string? input = Console.ReadLine(); // string? 表示它可能为空(null)
if (int.TryParse(input, out int age))
{
// 只有当解析成功时,此块才会执行
if (age >= 18)
{
Console.WriteLine("You are eligible to vote!");
}
else
{
Console.WriteLine("Sorry, you must be 18+ to vote.");
}
}
else
{
// 处理输入不是有效数字的情况
Console.WriteLine("That's not a valid age!");
}

尽管 C# 具有 for、while 和 do-while 循环,但 foreach 循环通常是迭代集合的最简洁方式。

var names = new List<string> { "Alice", "Bob", "Charlie" };
Console.WriteLine("Greeting everyone:");
foreach (var name in names)
{
Console.WriteLine($"Hello, {name}!");
}

方法(Methods)允许您将代码组织成可重用的块。对于返回值的简洁方法,您可以使用表达式体语法(expression-bodied syntax)。

// 标准方法体
void Greet(string name)
{
Console.WriteLine($"Hello, {name}!");
}
// 简单计算的表达式体方法
double Add(double a, double b) => a + b;
// --- 调用方法 ---
Greet("David");
double result = Add(5.5, 4.5);
Console.WriteLine($"5.5 + 4.5 = {result}");

C# 本质上是面向对象的。最佳实践是使用属性(properties,{ get; set; })来公开数据,而不是公共字段(public fields)。这提供了封装(encapsulation)和灵活性。

public class Car
{
// 现代 C# 属性 - 提供封装
public string Brand { get; set; }
public int Year { get; private set; } // 从类外部只读
public Car(string brand, int year)
{
Brand = brand;
Year = year;
}
public void DisplayInfo()
{
Console.WriteLine($"Car Info: {Year} {Brand}");
}
}
// --- 使用类 ---
var myCar = new Car("Tesla", 2024);
myCar.DisplayInfo();
// myCar.Year = 2025; // 这会导致编译错误,因为 setter 是私有的。

在现代应用程序中,特别是那些带有用户界面或网络请求的应用程序,不阻塞主线程至关重要。C# 的 async 和 await 特性使异步编程变得简单直接。您应该在本地机器上运行此代码。

using System.IO;
using System.Threading.Tasks;
// 在异步 Main 方法或顶级语句中使用 'await'
await File.WriteAllTextAsync("test.txt", "Hello, Async C#!");
string content = await File.ReadAllTextAsync("test.txt");
Console.WriteLine($"File Content (read asynchronously): {content}");

使用 async 方法可确保您的应用程序在等待文件读取等 I/O 操作完成时保持响应。

C# 是各种开发人员的绝佳选择:

  • 初学者和学生: 一门很棒的入门语言,语法清晰,强类型有助于防止常见错误。
  • Web 开发人员: 使用 ASP.NET Core 构建快速、安全的后端,并使用 Blazor 构建现代前端 UI。
  • 游戏开发人员: 世界最受欢迎的游戏引擎 Unity 的主要语言。
  • 移动开发人员: 使用 .NET MAUI 从单一代码库创建原生 iOS 和 Android 应用程序。
  • 企业开发人员: 为任何规模的企业构建健壮、可扩展和可维护的系统。

立即开始您的 C# 和 .NET 之旅,构建下一代应用程序。

虽然我们的教程设计为自包含的,但拥有一些基础知识可以加速您的学习:

  • 无需经验: 我们从零开始,但任何事先接触过编程概念(变量、循环、函数)的经验都会有所帮助。
  • 逻辑思维: 解决问题的诀窍是任何程序员最重要的技能。
  • 好奇心: 渴望构建事物并理解它们如何工作将使学习过程愉快而有效。

准备好深入学习了吗?让我们开始吧!