码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2019-01-19 22:55:56      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:实参   条件   静态类   不同   构造   image   http   lin   方式   

 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>();        //这句会报异常,因为类型实参不是每句类型

运行结果:

技术分享图片

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

标签:实参   条件   静态类   不同   构造   image   http   lin   方式   

原文地址:https://www.cnblogs.com/luguoshuai/p/10293421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!