C# 2.0 语言改进
1. 支持分部类——Parital关键字。
可以将类、结构或接口的定义拆分到两个或多个源文件中。
2. 迭代器——yield关键字
yield返回IEnumberable接口对象,使其可以支持foreach迭代。
yeild return用于返回值,yeild break用于中断迭代。
迭代器的返回类型必须为IEnumerable、IEnumerator、IEnumerable<T>或IEnumerator<T>。
如:
... {
public static IEnumerable Power(int number, int exponent)
...{
int counter = 0;
int result = 1;
while (counter++ < exponent)
...{
result = result * number;
yield return result;
}
}
}
3. 可空类型——Nullable关键字
System.Nullable<T>,用于表示某个类型 + null值的表示。
简写型为:类型?。
如:
System.Nullable<int> i = null;
int? i = null;
Nullable包含方法:
HasValue:返回是否包含某个值。
Value:返回当前值。
GetValueOrDefault:返回当前值或者默认值(无值时)。
使用期“??”运算符指定在取值时的默认值。如:
int? i = null;
int y = x ?? -1; //如果x为空则返回-1
可空类型不允许嵌套。
4. 匿名方法
如:
this.Load += delegate(System.Object o, System.EventArgs e){MessageBox.Show("Form1_Load");}
如:
... {
System.Threading.Thread t1 = new System.Threading.Thread(delegate()
...{
System.Console.Write("Hello, ");
System.Console.WriteLine("World!");
});
t1.Start();
}
5. 属性访问器
DotNet2.0中可以将get与set设写不同的访问性。
方法是属性(或索引器)本身具有修饰符,然后在get与set中的某一个上另设一个修饰符。另设的修饰符必须必属性本身修饰符更加严格。
6. 命名空间别名限定符——“::”
如:
using colAlias = System.Collections;
colAlias::Hashtable test = new colAlias::Hashtable();
另外,新增global关键字代表系统全局命名空间限定符,如:
global::System.Console.WriteLine....