二初始化
如果一个类有public字段在建立类的对象实例时可以使用下面的代码来初始化这些字段;
public class MyClass{public String field;public int field;public bool field;}MyClass my = new MyClass();myfield = abcd;myfield = ;myfield = true;
在C#中提供了一种更简便的方法来初始化这些public变量代码如下
MyClass my = new MyClass
{
field = abcd
field = ;
field =true;
};
上面的代码的写法有些象带参数的构造方法但这将不是调用了MyClass的构造方法(因为MyClass并没有带三个参数的构造方法)而只是C#编译器玩的一个魔术实际上上面的代码在编译后仍然和使用传统的初始化字段的方法一样只是在语法上看起来更简单(至少不用写那么多个my)要注意的的使用这种方法初始化必须是public的字段(不能是protectedprivate或默认修饰符的字段)
在C#中还改进了对集合类的初始化方式(使其初始化的方式类似于数组)但遗憾的是这种初始化方式只支持用泛型的集合类也就是说只有实现了SystemCollectionsGenericICollection的集合类才可以使用这种初始化方法代码如下
List myList = new List {
data
data
data
};
foreach (string data in myList)
{
textBoxAppendText(data);
}
三匿名类
在C#中提供了一种新的建立类的方法代码如下
var my = new
{
field = abcd
field =
};
MessageBoxShow(myfield);
C#编译器会自动推断my是一个有两个public字段的类的对象实例也就是说相当于下面的代码
public class MyClass{public String field;public int field;}var my = new MyClass();myfield = abcd;myfield = ;MessageBoxShow(myfield);
在第一部分讲到如果动态语言在给变量赋值的过程中改变了变量类型如果将其转换为强类型语言当然一种方法是将变量声明成object类型或是使用匿名类来解决这个问题代码如下
var myVar = new
{
field_string = abcd
field_int = ;
};
后根据当前这个变量所使用的类型来决定该使用哪个类字段
[] [] []