高级泛型

一 静态字段和静态构造函数
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>

和非泛型类型一样,任何封闭类型的静态构造函数只执行一次.所以,最后一行没有输出,因为他在第二行已经执行过了.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值