C# 简介
什么是 C#?
C#(读作"C Sharp")是微软公司开发的一种现代、通用、面向对象的编程语言。它是 .NET 平台的主要编程语言之一,结合了 C++ 的强大功能和 Visual Basic 的易用性。
C# 的发展历程
历史背景
C# 由微软的 Anders Hejlsberg 领导的团队开发,于 2000 年首次发布。Anders Hejlsberg 也是 Turbo Pascal 和 Delphi 的主要设计者。
版本演进
| 版本 | 发布年份 | .NET 版本 | 主要特性 |
|---|---|---|---|
| C# 1.0 | 2002 | .NET 1.0 | 基础面向对象特性 |
| C# 2.0 | 2005 | .NET 2.0 | 泛型、匿名方法、可空类型 |
| C# 3.0 | 2007 | .NET 3.5 | LINQ、Lambda 表达式、自动属性 |
| C# 4.0 | 2010 | .NET 4.0 | 动态类型、可选参数 |
| C# 5.0 | 2012 | .NET 4.5 | async/await 异步编程 |
| C# 6.0 | 2015 | .NET 4.6 | 字符串插值、空条件运算符 |
| C# 7.0 | 2017 | .NET 4.7 | 元组、模式匹配 |
| C# 8.0 | 2019 | .NET Core 3.0 | 可空引用类型、异步流 |
| C# 9.0 | 2020 | .NET 5.0 | 记录类型、顶级程序 |
| C# 10.0 | 2021 | .NET 6.0 | 全局 using、文件范围命名空间 |
| C# 11.0 | 2022 | .NET 7.0 | 原始字符串字面量、泛型特性 |
| C# 12.0 | 2023 | .NET 8.0 | 主构造函数、集合表达式 |
C# 的特点
1. 面向对象
C# 是一种纯面向对象的编程语言,支持:
- 封装:通过访问修饰符控制成员访问
- 继承:支持单继承和接口多实现
- 多态:通过虚方法和接口实现
csharp
// 面向对象示例
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("动物发出声音");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("汪汪汪");
}
}2. 类型安全
C# 是强类型语言,在编译时进行类型检查:
csharp
int number = 42; // 整数类型
string text = "Hello"; // 字符串类型
// string result = number + text; // 编译错误:类型不匹配
string result = number.ToString() + text; // 正确:显式转换3. 内存管理
C# 具有自动内存管理功能:
- 垃圾回收:自动回收不再使用的内存
- 托管代码:运行在 .NET 运行时环境中
- 安全性:防止内存泄漏和缓冲区溢出
4. 跨平台支持
现代 C# 支持跨平台开发:
- Windows:传统强项
- Linux:通过 .NET Core/.NET 5+
- macOS:完整支持
- 移动平台:通过 Xamarin 和 .NET MAUI
C# 的应用领域
1. 桌面应用程序
csharp
// Windows Forms 示例
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello, Windows Forms!");
}
}2. Web 应用程序
csharp
// ASP.NET Core 示例
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet]
public IActionResult GetProducts()
{
var products = new[] { "产品1", "产品2", "产品3" };
return Ok(products);
}
}3. 移动应用程序
csharp
// Xamarin.Forms 示例
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void OnButtonClicked(object sender, EventArgs e)
{
DisplayAlert("提示", "Hello, Xamarin!", "确定");
}
}4. 游戏开发
csharp
// Unity 游戏开发示例
public class PlayerController : MonoBehaviour
{
public float speed = 5.0f;
void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontal, 0, vertical);
transform.Translate(movement * speed * Time.deltaTime);
}
}.NET 生态系统
.NET 平台架构
┌─────────────────────────────────────────────────────────┐
│ 应用程序层 │
├─────────────────────────────────────────────────────────┤
│ WinForms │ WPF │ ASP.NET │ Xamarin │ Unity │
├─────────────────────────────────────────────────────────┤
│ .NET 基础类库 (BCL) │
├─────────────────────────────────────────────────────────┤
│ 公共语言运行时 (CLR) │
├─────────────────────────────────────────────────────────┤
│ 操作系统 │
└─────────────────────────────────────────────────────────┘核心组件
公共语言运行时 (CLR)
- 内存管理
- 垃圾回收
- 异常处理
- 类型安全
基础类库 (BCL)
- 集合类
- 文件 I/O
- 网络通信
- 数据访问
公共类型系统 (CTS)
- 统一的类型系统
- 跨语言互操作
- 类型安全保证
C# 与其他语言的比较
C# vs Java
| 特性 | C# | Java |
|---|---|---|
| 平台 | 主要 Windows,现支持跨平台 | 跨平台 |
| 语法 | 更现代,语法糖丰富 | 相对保守 |
| 性能 | 接近原生代码 | 虚拟机执行 |
| 生态 | Microsoft 生态 | 开源生态 |
C# vs C++
| 特性 | C# | C++ |
|---|---|---|
| 内存管理 | 自动垃圾回收 | 手动管理 |
| 类型安全 | 强类型安全 | 相对宽松 |
| 开发效率 | 高 | 中等 |
| 性能 | 高(接近原生) | 最高 |
C# vs Python
| 特性 | C# | Python |
|---|---|---|
| 类型系统 | 静态强类型 | 动态弱类型 |
| 性能 | 高 | 相对较低 |
| 学习曲线 | 中等 | 平缓 |
| 应用领域 | 企业应用、游戏 | 数据科学、AI |
C# 的优势
1. 强大的开发工具
- Visual Studio:功能丰富的 IDE
- IntelliSense:智能代码补全
- 调试器:强大的调试功能
- 性能分析器:代码性能分析
2. 丰富的框架和库
csharp
// Entity Framework - ORM 框架
public class BlogContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}
// ASP.NET Core - Web 框架
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<BlogContext>();
}
}3. 活跃的社区
- NuGet:包管理器,数十万个包
- GitHub:大量开源项目
- Stack Overflow:活跃的问答社区
- Microsoft Docs:详细的官方文档
4. 企业级支持
- 长期支持 (LTS):稳定的版本支持
- 向后兼容:良好的兼容性
- 安全更新:及时的安全补丁
- 技术支持:Microsoft 官方支持
学习 C# 的价值
职业发展
- 就业机会:企业级应用开发需求大
- 薪资水平:C# 开发者薪资相对较高
- 技能迁移:易于学习其他 .NET 语言
- 职业路径:从初级到架构师的清晰路径
技术成长
- 编程思维:培养面向对象思维
- 工程能力:学习大型项目开发
- 架构设计:理解企业级架构模式
- 技术视野:接触现代开发技术栈
本章小结
C# 是一门现代、强大、易学的编程语言,具有以下特点:
核心优势:
- 面向对象的设计理念
- 强类型安全保证
- 自动内存管理
- 跨平台支持能力
- 丰富的生态系统
应用领域:
- 桌面应用程序开发
- Web 应用程序开发
- 移动应用程序开发
- 游戏开发
- 企业级应用开发
学习价值:
- 良好的就业前景
- 完整的技术栈
- 活跃的社区支持
- 持续的技术发展
在下一章中,我们将学习如何搭建 C# 开发环境,包括 Visual Studio 的安装和配置。