从零开始独立游戏开发学习笔记(十九)--Unity学习笔记(七)--微软C#指南(四)

感觉语法了解到这里已经足够了,教程里有很多都是业务流程。现在这一章主要是一些比较新的功能。
这一篇之后就等需要用到的时候再学了。
下一篇回归 unity。
1. try catch finally
和别的语言一样,没什么好说的。
2. 顶级语句
C# 9 提供的特性,并在 C# 10 中改进,便于初学者或者探索新想法时使用。无需写如下:

而是直接一句话代替即可。(此为 C# 10 中改进后的样式)

免去写类写静态方法等繁琐步骤。当然,这是为了方便探索新想法和初学者使用。正规用的话还是老老实实写。
3. 索引和范围
3.1 索引
类似于 python 里的 -1 语法,C# 里是 ^1 来表示从数组后面开始数。sequence[^1] == sequence[sequence.Length - 1]
3.2 范围
类似于 Python 的 sequence[1-3]
,C# 也提供范围,语法从 - 变成 ..(注意是两个点),范围也一样包头不包尾。因此表示整个数组的写法是 sequence[0..sequence.Length]
,^ 语法也同样可以用在范围里。
和 python 一样,得到的结果是一个新副本。
3.3 变量写法
和 python 不一样的是,在 C# 里,索引和范围是两个类型,是可以但单独拿出来作为变量使用的。见如下代码:

3.4 支持格式
String
和 Span<T>
,ReadOnlySpan<T>
支持索引和范围。List<T>
支持索引不支持范围。
单维数组和交错数组支持索引和范围。多维数组都不支持。
4. 可为空引用类型
为什么会有可为空这种专门的类型?因为这样可以使代码更为清晰,很方便地区分哪些变量必须有一个值,哪些是可以没有值的。可以表明设计意图。
5. 异步
用法和 js 一样,在函数前加 async 修饰,用 await 来等待异步方法返回。
进阶用法有 await foreach 可以循环使用异步流。 yield return 返回用 async 修饰的方法中的任意元素。