Skip to Content
Nextra 4.0 is released 🎉
编程语言C#

C# 编程语言学习指南

C# 是由微软开发的一种强类型、面向对象的编程语言,是 .NET 平台的主要语言之一。

目录

基础语法

变量和数据类型

// 基本数据类型 int number = 42; string text = "Hello World"; bool isTrue = true; double decimalNumber = 3.14; // 类型推断 var inferredType = "自动推断为string类型"; // 常量 const int MAX_SIZE = 100;

控制流

// if-else 语句 if (condition) { Console.WriteLine("条件为真"); } else if (anotherCondition) { Console.WriteLine("另一个条件为真"); } else { Console.WriteLine("所有条件都为假"); } // switch 语句 switch (value) { case 1: Console.WriteLine("值为1"); break; case 2: Console.WriteLine("值为2"); break; default: Console.WriteLine("其他值"); break; } // 循环 for (int i = 0; i < 10; i++) { Console.WriteLine(i); } foreach (var item in collection) { Console.WriteLine(item); } while (condition) { // 循环体 }

面向对象编程

类和对象

public class Person { // 字段 private string _name; // 属性 public string Name { get { return _name; } set { _name = value; } } // 自动属性 public int Age { get; set; } // 构造函数 public Person(string name, int age) { Name = name; Age = age; } // 方法 public void Introduce() { Console.WriteLine($"我叫{Name},今年{Age}岁"); } }

继承和多态

public class Animal { public virtual void MakeSound() { Console.WriteLine("动物发出声音"); } } public class Dog : Animal { public override void MakeSound() { Console.WriteLine("汪汪汪!"); } } public class Cat : Animal { public override void MakeSound() { Console.WriteLine("喵喵喵!"); } }

接口

public interface ILogger { void Log(string message); void LogError(string error); } public class ConsoleLogger : ILogger { public void Log(string message) { Console.WriteLine($"INFO: {message}"); } public void LogError(string error) { Console.WriteLine($"ERROR: {error}"); } }

高级特性

泛型

public class GenericList<T> { private List<T> _items = new List<T>(); public void Add(T item) { _items.Add(item); } public T Get(int index) { return _items[index]; } } // 使用泛型 var stringList = new GenericList<string>(); stringList.Add("Hello"); stringList.Add("World");

委托和事件

// 委托 public delegate void MessageHandler(string message); public class Publisher { // 事件 public event MessageHandler MessageReceived; public void SendMessage(string message) { MessageReceived?.Invoke(message); } } public class Subscriber { public void OnMessageReceived(string message) { Console.WriteLine($"收到消息: {message}"); } } // 使用 var publisher = new Publisher(); var subscriber = new Subscriber(); publisher.MessageReceived += subscriber.OnMessageReceived; publisher.SendMessage("Hello World");

扩展方法

public static class StringExtensions { public static string Reverse(this string str) { return new string(str.Reverse().ToArray()); } } // 使用 string text = "Hello"; string reversed = text.Reverse(); // "olleH"

异步编程

async/await

public async Task<string> GetDataAsync() { // 模拟异步操作 await Task.Delay(1000); return "数据获取完成"; } public async Task ProcessDataAsync() { try { string result = await GetDataAsync(); Console.WriteLine(result); } catch (Exception ex) { Console.WriteLine($"错误: {ex.Message}"); } }

并行编程

// 并行处理 var numbers = Enumerable.Range(1, 1000); var results = numbers.AsParallel() .Where(n => n % 2 == 0) .Select(n => n * n) .ToList();

LINQ

查询语法

var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 查询语法 var evenNumbers = from n in numbers where n % 2 == 0 select n; // 方法语法 var evenNumbers2 = numbers.Where(n => n % 2 == 0); // 排序 var sortedNumbers = numbers.OrderBy(n => n); // 分组 var groupedNumbers = numbers.GroupBy(n => n % 2 == 0 ? "偶数" : "奇数");

复杂查询

public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public string Category { get; set; } } var products = new List<Product> { new Product { Id = 1, Name = "Laptop", Price = 999.99m, Category = "Electronics" }, new Product { Id = 2, Name = "Mouse", Price = 29.99m, Category = "Electronics" }, new Product { Id = 3, Name = "Book", Price = 19.99m, Category = "Books" } }; // 复杂查询 var expensiveElectronics = from p in products where p.Category == "Electronics" && p.Price > 50 orderby p.Price descending select new { p.Name, p.Price };

最佳实践

命名约定

// 类名使用PascalCase public class UserManager { } // 方法名使用PascalCase public void GetUserById() { } // 私有字段使用下划线前缀 private string _userName; // 常量使用UPPER_CASE public const int MAX_RETRY_COUNT = 3;

异常处理

public void ProcessFile(string filePath) { try { // 可能抛出异常的代码 string content = File.ReadAllText(filePath); ProcessContent(content); } catch (FileNotFoundException ex) { Console.WriteLine($"文件未找到: {ex.Message}"); } catch (UnauthorizedAccessException ex) { Console.WriteLine($"访问被拒绝: {ex.Message}"); } catch (Exception ex) { Console.WriteLine($"未知错误: {ex.Message}"); } finally { // 清理资源 Console.WriteLine("处理完成"); } }

资源管理

// 使用using语句自动释放资源 using (var stream = new FileStream("file.txt", FileMode.Open)) { // 使用stream } // C# 8.0+ 的简化语法 using var stream = new FileStream("file.txt", FileMode.Open); // 使用stream

常用框架

ASP.NET Core

// 控制器 [ApiController] [Route("api/[controller]")] public class UsersController : ControllerBase { [HttpGet] public async Task<ActionResult<IEnumerable<User>>> GetUsers() { // 返回用户列表 return Ok(users); } [HttpPost] public async Task<ActionResult<User>> CreateUser([FromBody] User user) { // 创建用户 return CreatedAtAction(nameof(GetUsers), user); } }

Entity Framework Core

public class ApplicationDbContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("connection_string"); } } // 使用 using (var context = new ApplicationDbContext()) { var users = context.Users.ToList(); var user = context.Users.FirstOrDefault(u => u.Id == 1); }

Unity 游戏开发

using UnityEngine; public class PlayerController : MonoBehaviour { public float speed = 5f; void Update() { float horizontalInput = Input.GetAxis("Horizontal"); float verticalInput = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(horizontalInput, 0, verticalInput); transform.Translate(movement * speed * Time.deltaTime); } }

学习资源

常用工具

  • Visual Studio - 主要的C#开发IDE
  • Visual Studio Code - 轻量级编辑器
  • JetBrains Rider - 跨平台C# IDE
  • .NET CLI - 命令行工具

最后更新: 2024年

最近更新:12/9/2025, 2:17:56 AM