404 Not Found

404 Not Found


nginx

C#简介

如果你曾经搭过积木,那你已经理解了编程的精髓——把简单的零件组合成复杂的结构。C#就是这样一套"积木":语法清晰、类型安全、功能强大,让你从第一行代码开始就能搭建出专业级的应用程序。

什么是 C#

C#(读作"C Sharp")是微软在2000年由首席设计师 Anders Hejlsberg 主持开发的一种面向对象的编程语言,于2002年正式发布。它的名字中的 # 是四个 + 号的排列,暗示它在 C/C++ 的基础上更进了一步。

C# 运行在 .NET 平台上,由 CLR(公共语言运行时)负责编译和执行,由 FCL(框架类库)提供丰富的 API 支持。简单来说:

组成部分 作用 类比
C# 语言 编写代码的语法规则 汽车的驾驶手册
CLR 编译和运行程序 汽车的发动机
FCL 提供现成的功能库 汽车的配件仓库
.NET SDK 开发工具包 整个汽车工厂

为什么学 C#

C# 能做什么

应用领域 技术栈 说明
游戏开发 Unity + C# Unity 是全球最流行的游戏引擎,脚本语言为 C#
Web 应用 ASP.NET Core 高性能 Web API 和 MVC 网站
企业应用 .NET + EF Core ERP、CRM 等大型业务系统
移动应用 .NET MAUI / Xamarin 一套代码运行 Android 和 iOS
桌面应用 WPF / WinForms Windows 原生桌面程序
云服务 Azure + C# 微软云生态的首选语言
IoT & 嵌入式 .NET nanoFramework 在微控制器上运行 C#
机器学习 ML.NET .NET 原生机器学习框架

C# 的特点

类型安全

C# 是强类型语言,编译器会在程序运行前检查类型匹配,避免大量运行时错误。

示例

CSHARP
int age = 25;
string name = "C#";
age = name;
▶ 试一试

编译时即报错,无法将 string 赋给 int 变量:

TEXT
error CS0029: Cannot implicitly convert type 'string' to 'int'

面向对象

C# 从诞生之初就是面向对象语言,支持封装、继承、多态三大核心特性,一切皆对象。

示例

CSHARP
class Animal
{
    public string Name { get; set; }
    public virtual void Speak() => Console.WriteLine($"{Name} makes a sound");
}

class Dog : Animal
{
    public override void Speak() => Console.WriteLine($"{Name} says: Woof!");
}

var dog = new Dog { Name = "Buddy" };
dog.Speak();
▶ 试一试
TEXT
Buddy says: Woof!

跨平台

.NET 5+ 统一了原有的 .NET Framework(仅 Windows)和 .NET Core(跨平台),如今一份代码可在 Windows、Linux、macOS 上运行。

现代语法演进

C# 几乎每两年发布一个大版本,持续吸收函数式编程、模式匹配、异步编程等现代语言特性,保持语言活力。

C# 发展简史

版本 发布年份 核心特性
C# 1.0 2002 基础面向对象、类、接口、委托
C# 2.0 2005 泛型、匿名方法、可空类型
C# 3.0 2007 LINQ、Lambda 表达式、扩展方法、自动属性
C# 4.0 2010 动态绑定、命名参数、协变逆变
C# 5.0 2012 async/await 异步编程
C# 6.0 2015 字符串插值、空条件运算符、异常筛选器
C# 7.0 2017 模式匹配、元组、本地函数
C# 8.0 2019 可空引用类型、异步流、默认接口方法
C# 9.0 2020 记录类型、顶级语句、init 访问器
C# 10.0 2021 global using、命名空间范围、常量字符串插值
C# 11.0 2022 原始字符串字面量、列表模式、required 修饰符
C# 12.0 2023 主构造函数、集合表达式、内联数组

.NET 生态演进

阶段 名称 说明
2002—2019 .NET Framework 仅 Windows,最高 4.8,不再新增功能
2016—2019 .NET Core 跨平台重构,1.0 → 2.0 → 3.1
2020 .NET 5 统一 .NET Core 和 Mono,跳过 4 避免混淆
2021 .NET 6 首个 LTS(长期支持)统一版本
2022 .NET 7 STS(标准支持)版本
2023 .NET 8 第二个 LTS 版本,当前推荐生产使用
2024 .NET 9 最新 STS 版本
💡 选择建议:新项目优先使用 .NET 8 LTS,追求最新特性可尝试 .NET 9。避免使用 .NET Framework(除非维护旧项目)。

C# 与其他语言对比

对比维度 C# Java C++ Python
类型系统 强类型,类型推断 强类型,较啰嗦 强类型,更复杂 动态类型
运行方式 JIT 编译 JIT 编译 原生编译 解释执行
性能 最高 较低
语法演进 快(2年一版) 慢(3~4年一版) 稳定 中等
跨平台 .NET 5+ JVM 需重编译 原生支持
游戏开发 Unity 首选 LibGDX 等 Unreal 首选 脚本/辅助
内存管理 自动 GC 自动 GC 手动 自动 GC
入门难度 中等 中等
⚠️ C# 与 Java 语法相似度很高,但 C# 演进更快,拥有 LINQ、async/await、属性、运算符重载等 Java 长期缺少的特性。与 C++ 相比,C# 牺牲了极致性能,换来了安全性和开发效率。与 Python 相比,C# 编译执行、类型严格,在大项目中更易维护。

第一个 C# 程序

示例

使用 C# 9.0 引入的顶级语句,只需一行代码:

CSHARP
System.Console.WriteLine("Hello, World!");
▶ 试一试
TEXT
Hello, World!

示例

传统写法,使用 Main 方法入口(C# 9.0 之前的标准写法):

CSHARP
using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}
▶ 试一试
TEXT
Hello, World!
💡 两种写法功能完全相同。新项目推荐使用顶级语句,更简洁。理解传统写法有助于阅读旧代码和学习面向对象结构。

如何学好 C#

❓ 常见问题

Q C# 和 .NET 是什么关系?
A C# 是编程语言,.NET 是运行平台;C# 代码编译后运行在 .NET 的 CLR 上,就像汽车(C#)需要道路(.NET)才能行驶。
Q 学 C# 必须用 Windows 吗?
A 不必。.NET 5+ 已支持 Linux 和 macOS,VS Code + C# Dev Kit 即可跨平台开发。
Q .NET Framework 和 .NET 8 有什么区别?
A .NET Framework 是仅 Windows 的旧版,已停止新功能开发;.NET 8 是跨平台的新一代 LTS 版本,推荐所有新项目使用。
Q Unity 脚本用的 C# 和标准 C# 一样吗?
A 语法完全相同,但 Unity 运行在 Mono/.NET Standard 子集上,部分最新 C# 特性可能尚未支持,且 Unity 提供了大量游戏专用 API。

📖 小节

📝 作业

  1. 安装 .NET SDK,在终端运行 dotnet new console -n MyFirstApp,然后用顶级语句输出自己的名字和一句自我介绍
  2. 将上面的顶级语句改写为传统 Program.Main 写法,对比两种风格的异同
  3. 查阅资料,列出 C# 3.0 引入的 LINQ 是什么,用一句中文概括它的作用
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏