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

起因大概是看到一个笑话,说这个语言为什么要叫C#不叫Db,莫名戳中我的笑点,也让我对这门语言有了兴趣。(不过真要说起来。可能Unity的影响会更大一点)
由于有C/C++基础,学习C#的基础知识并不困难,感觉一些C#的特性需要注意一下以外基本无痛掌握:
内存管理
- 垃圾回收(GC):无需手动
delete
,但需注意:- 避免大量短命对象(影响GC效率)
- 非托管资源需用
IDisposable
接口释放(如文件句柄)
1
2
3using (FileStream fs = new FileStream("file.txt")) {
// 自动调用fs.Dispose()
}- 垃圾回收(GC):无需手动
面向对象增强
- 属性(Properties):
1
2
3
4
5private int _age;
public int Age {
get => _age;
set => _age = value > 0 ? value : 0;
}- 委托与事件(类似函数指针但类型安全):
1
2public delegate void ClickHandler(object sender, EventArgs e);
public event ClickHandler OnClick;泛型
- 比C++模板更安全(运行时支持):
1
List<int> numbers = new List<int>(); // 无需类似C++的vector<int>
异常处理
- 强制结构化异常处理(
try-catch-finally
):
1
2
3try { /* 可能出错的代码 */ }
catch (IOException ex) { /* 特定异常处理 */ }
finally { /* 清理资源 */ }- 强制结构化异常处理(
于此同时,.net框架的核心库也有必要掌握:
集合类型
- 线程安全变体:
1
var concurrentDict = new ConcurrentDictionary<int, string>();
LINQ(语言集成查询)
- 数据查询的声明式语法:
1
var evenNumbers = numbers.Where(n => n % 2 == 0).OrderBy(n => n);
异步编程
async/await
简化异步操作:
1
2
3
4public 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 进行许可。