升C大调的赛博交响曲——C#学习笔记

Wang1r Lv3

起因大概是看到一个笑话,说这个语言为什么要叫C#不叫Db,莫名戳中我的笑点,也让我对这门语言有了兴趣。(不过真要说起来。可能Unity的影响会更大一点)

由于有C/C++基础,学习C#的基础知识并不困难,感觉一些C#的特性需要注意一下以外基本无痛掌握:

  1. 内存管理

    • 垃圾回收(GC):无需手动delete,但需注意:
      • 避免大量短命对象(影响GC效率)
      • 非托管资源需用IDisposable接口释放(如文件句柄)
    1
    2
    3
    using (FileStream fs = new FileStream("file.txt")) {
    // 自动调用fs.Dispose()
    }
  2. 面向对象增强

    • 属性(Properties)
    1
    2
    3
    4
    5
    private int _age;
    public int Age {
    get => _age;
    set => _age = value > 0 ? value : 0;
    }
    • 委托与事件(类似函数指针但类型安全):
    1
    2
    public delegate void ClickHandler(object sender, EventArgs e);
    public event ClickHandler OnClick;
  3. 泛型

    • 比C++模板更安全(运行时支持):
    1
    List<int> numbers = new List<int>(); // 无需类似C++的vector<int>
  4. 异常处理

    • 强制结构化异常处理(try-catch-finally):
    1
    2
    3
    try { /* 可能出错的代码 */ }
    catch (IOException ex) { /* 特定异常处理 */ }
    finally { /* 清理资源 */ }

于此同时,.net框架的核心库也有必要掌握:

  1. 集合类型

    • 线程安全变体:
    1
    var concurrentDict = new ConcurrentDictionary<int, string>();
  2. LINQ(语言集成查询)

    • 数据查询的声明式语法:
    1
    var evenNumbers = numbers.Where(n => n % 2 == 0).OrderBy(n => n);
  3. 异步编程

    • async/await简化异步操作:
    1
    2
    3
    4
    public async Task LoadDataAsync() {
    string data = await File.ReadAllTextAsync("data.txt");
    // 自动线程调度
    }

实践方面,由于.NET框架过于复杂,短时间内无法掌握,unity游戏开发也是个大工程所以只能短时间内搁置了(还是太菜了呜呜)

  • 标题: 升C大调的赛博交响曲——C#学习笔记
  • 作者: Wang1r
  • 创建于 : 2025-02-20 12:24:00
  • 更新于 : 2025-04-07 12:35:15
  • 链接: https://wang1rrr.github.io/2025/02/20/升C大调的赛博交响乐——CSharp学习笔记/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
升C大调的赛博交响曲——C#学习笔记