According to C#
Last renew: August 30, 2022 pm
Async & Await
C#利用Async和Await关键字实现异步编程。
异步编程:让程序并行运行的一种方式,并行的好处就不多说了。
Async和await是代码标记,它标记代码位置为任务完成后控件应该恢复的位置。
Lambda Function
Lambda函数是foreach以及简单的for循环的替代。会让代码看起来更加整洁漂亮。
首先,你可以使用一个lambda表达式来创建一个匿名函数。使用Lambda声明操作符=>
来分离Lambda的参数列表和它的主体。一个lambda表达式可以是以下两种形式中的任何一种:
- Expression lambda(有一个表达)
1 |
|
- Statement lambda(有一个声明的block)
1 |
|
Get & Set
有两个类person:
1 |
|
第一个类型的name属性为封装。其属性直接通过public
关键字暴露给系统中的其他类了。
第二个类型的Name属性通过get和set进行了封装。get和set分别对应可读和可写。相当于下面的代码
1 |
|
区别在于:
当实例化第一个“person”类时,系统在分配内存空间时对name属性直接分配内存。之后对name属性的操作也是直接操作内存中name属性所在的这个块。
而当实例化第二个”person”类时,系统会先分配一个叫name的private私有的内存空间,之后的读和写都是通过Name这个public的类似于指针的东西来关联name进行,这样就完成了封装。通过get/set关键字也可以控制可读可写。
第二个例子:一个银行类,既能存钱也能取钱。
1 |
|
Money就像银行里的自动取款机,你看不见钱,但是你能用set(存钱)get(取钱)。money是一个私有字段,封装在类中的,类之外的程序不能直接访问。在C#的get、set用法中,类的set和get成员是外部程序访问类内部属性的唯一方法。就像去银行取钱,你不能直接去保险柜拿钱,是柜员取钱给你。
你可以利用属性来限制外界对你字段的存取。如果只想让用户读就get,只想让用户写就set。
1 |
|
可以看出,get/set的用法有如下特点
- 隐藏组建或类内部的真实成员
- 建立约束
- 响应属性变化事件。
“out” keyword
out 关键字通过引用传递参数。使用这个参数声明方法是返回多个值的经典解决方法。下面的示例使用out返回具有单个方法调用的三个变量。方法可以有选择的返回值。
1 |
|
“throw” keyword
throw 关键字标志着在程序执行过程中发生了一个异常。
1 |
|
e是一个排生自System.Exception 的类的实例。下面的例子使用throw语句来抛出一个IndexOutOfRangeException。如果传递给一个名为GetNumber的方法的参数不对应于一个内部数组的有效索引。