C#定义只能处理枚举类型的泛型类型

 1 internal sealed class GenericTypeThatRequireAnEnum<T>
 2 {
 3     public static int age = 12;   //该 static 字段在不同的封闭类型之间是独立不共享的
 4 
 5     //静态构造器针对每个封闭类型都会执行一次,泛型类型定义静态构造器的目的就是为了保证传递的类型实参满足特定的条件
 6     //静态类型构造器只能是私有的,不能添加访问权限修饰符,并且是由 CLR 自动调用的
 7     static GenericTypeThatRequireAnEnum()
 8     {
 9         Console.WriteLine("T type is : {0}", typeof(T).Name);
10         if (!typeof(T).IsEnum)
11         {
12             throw new ArgumentException("T must be an enumerated type");
13         }
14     }

使用方式:

1 enum eEnum1 { }
2 
3 enum eEnum2 { }
4 
5 GenericTypeThatRequireAnEnum<eEnum1> tmp1 = new GenericTypeThatRequireAnEnum<eEnum1>();
6 GenericTypeThatRequireAnEnum<eEnum1>.age = 153;
7 GenericTypeThatRequireAnEnum<eEnum2> tmp2 = new GenericTypeThatRequireAnEnum<eEnum2>();
8 Console.WriteLine(GenericTypeThatRequireAnEnum<eEnum2>.age);
9 //GenericTypeThatRequireAnEnum<int> tmp3 = new GenericTypeThatRequireAnEnum<int>();        //这句会报异常,因为类型实参不是每句类型

运行结果:

转载于:https://www.cnblogs.com/luguoshuai/p/10293421.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值