TinyMind
.net.cn
首页
资讯
文章
注册
登录
【C#版本详情回顾】C#2.0主要功能列表
周信达
关注文章
TinyMind专栏频道
泛型
优点:类型安全/重用代码/提升性能
应用:泛型接口、泛型类、泛型类型参数、泛型方法、泛型事件和泛型委托
命名空间:System.Collections.Generic
特性:泛型约束,default关键字获取类型默认值 default(T)
反射:支持反射获取泛型类型信息
迭代器
优点:更简洁的语义实现迭代器
语法:yield return语句依次返回每个元素,yield break将终止迭代
分部类(分部接口、分部结构 关键字partial)
作为同一类型的各个部分的所有分部类型定义都必须使用
partial
进行修饰
partial
修饰符只能出现在紧靠关键字
class
、
struct
或
interface
前面的位置
分部类型定义中允许使用嵌套的分部类型
要成为同一类型的各个部分的所有分部类型定义都必须在同一程序集和同一模块中进行定义
类名和泛型类型参数在所有的分部类型定义中都必须匹配,泛型类型可以是分部的
分部类的各个部分必须具有相同的可访问性,如 public、private 等
分部类同样支持支持分部结构和分部接口
可空类型
可空类型表示可被赋值为
null
值的值类型变量,无法创建基于引用类型的可空类型
语法
T?
是 System.Nullable<T> 的简写,此处的
T
为值类型
为可空类型赋值与为一般值类型赋值的方法相同,如
int? x = 10;
或
double? d = 4.108
如果基础类型的值为
null
,请使用
System.Nullable.GetValueOrDefault
属性返回该基础类型所赋的值或默认值
请使用
HasValue
和
Value
只读属性测试是否为空和检索值
如果已赋值,则
Value
属性返回该值,否则将引发
System.InvalidOperationException
支持
??
运算符分配默认值。。。
不允许使用嵌套的可空类型,将不编译下面一行:
Nullable<Nullable<int>> n
基于可空类型的对象只在该对象为非空时装箱。如果
HasValue
为
false
,则不装箱,而是将对象引用直接赋值为
null
如果对象非空,也就是说,如果
HasValue
为
true
,则会发生装箱过程,但只将可空对象所基于的基础类型装箱
可空类型支持一元运算和二元运算,以及与非可空类型的转换和转型
相等运算,如果两个操作数都是null,两者相等
关系运算,操作数任何一个是null,结果就是返回false
可空类型在CLR中的一些特殊待遇
值类型上定义的重载操作符,在其可空版本上,支持自动调用
已装箱值类型拆箱为可空类型,如果引用为null,那么拆箱后的Nullable<T>值也为null,拆箱为非可空版本则会抛出异常
可空类型进行GetType(),编译器会进行伪装,返回非可空的实际类型
支持直接将可空类型转型为非可空版本的接口类型
匿名方法
使用匿名方法,则不必创建单独的方法,因此减少了实例化委托所需的编码系统开销
如果局部变量和参数的范围包含匿名方法声明,则该局部变量和参数称为该匿名方法的外部变量或捕获变量
与局部变量不同,外部变量的生命周期一直持续到引用该匿名方法的委托符合垃圾回收的条件为止
匿名方法不能访问外部范围的
ref
或
out
参数
命名空间别名限定符
静态类
它们仅包含静态成员
它们不能被实例化
它们是密封的
它们不能包含
实例构造函数
创建静态类与创建仅包含静态成员和私有构造函数的类大致一样
可声明静态构造函数以分配初始值或设置某个静态状态
静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化
静态构造函数
静态构造函数既没有访问修饰符,也没有参数
在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化
类
无法直接调用静态构造函数
在程序中,用户无法控制何时执行静态构造函数
静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项
静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用
LoadLibrary
方法
外部程序集别名
(extern)
属性访问器可访问性
委托中的协变和逆变
传递给委托的方法在返回类型和参数方面可以具有更大的灵活性
固定大小的缓冲区
在不安全的代码块中,现在可以声明包含嵌入数组的固定大小结构
友元程序集
程序集可以提供对其他程序集的非公共类型的访问
内联警告控制
#pragma
警告指令可用于禁用和启用某些编译器警告
#pragma warning disable warning-list
#pragma warning restore warning-list
volatile
现在可以将
volatile
关键字应用于
IntPtr
和
UIntPtr
volatile
关键字表示字段可能被多个并发执行线程修改
声明为
volatile
的字段不受编译器优化(假定由单个线程访问)的限制
确保该字段在任何时间呈现的都是最新的值
volatile
修饰符通常用于由多个线程访问而不使用
lock 语句(C# 参考)
语句对访问进行序列化的字段
应用字段类型包括:引用类型、指针类型、整型、枚举类型
关键字仅可应用于类或结构字段。不能将局部变量声明为
volatile
优质内容筛选与推荐
>>
1、[BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】
2、这是我的第一篇博客
3、通过KSoap三方插件解析WebService接口方法
4、ActionContext和ServletActionContext介绍
5、js之eval详解
赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
阅读
好看
已推荐到看一看
你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
取消
推荐
我知道了
已取消,“好看”想法已同步删除
知道了
已推荐到看一看
和朋友分享想法
最多200字,当前共
字
发送
已发送
朋友将在看一看看到
确定
分享你的想法...
取消
分享想法到看一看
确定
最多200字,当前共
字
发送中
网络异常,请稍后重试
知道了
微信扫一扫
关注该公众号
0
│
收藏
│
举报