一 静态字段和静态构造函数
1每个封闭类型都有他自己的静态字段集
代码清单 证明不同的封闭类型具有不同的静态字段
class TypeWithFied<T>
{
public static string field;//静态字段
public static void PrintField()//静态方法
{
Console.writeline(field+":"+typeof(T).Name);
}
}
实现类
TypeWithFied<int>.field="first";//给静态字段赋值
TypeWithFied<string>.field="second";
TypeWithFied<DateTime>.field="third";
TypeWithFied<int>.PrintField();//调用静态方法
TypeWithFied<string>.PrintField();
TypeWithFied<DateTime>.PrintField();
输出:
first:Int32
second:String
third:DateTime
每个封闭类型有一个静态字段。同样的规则也适用于静态初始化程序和静态构造函数。然而,一个泛型类型可能嵌套在另一个泛型类型中,而且一个类型可能有多个泛型参数。
代码清单 嵌套泛型类型的静态构造函数
public class Outer<T>
{
public class Inner<U,V>
{
Console.writeline("Outer<{0}>.Inner<{1},{2}>",typeof(T).Name,typeof(U).Name,typeof(V).Name);
}
public static void DummyMethod(){}
}
实现:
Outer<int>.Inner<string,DateTime>.DummyMethod();
Outer<string>.Inner<int,int>.DummyMethod();
Outer<Object>.Inner<string,object>.Dummymethod();
Outer<string>.Inner<int,int>.DummyMethod();
输出:
Outer<Int32>.Inner<String,DateTime>
Outer<String>.Inner<Int32,Int32>
Outer<Object>.Inner<String,Object>
和非泛型类型一样,任何封闭类型的静态构造函数只执行一次.所以,最后一行没有输出,因为他在第二行已经执行过了.