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

2021-06-18 22:06

阅读:310

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

 1 internal sealed class GenericTypeThatRequireAnEnum 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 tmp1 = new GenericTypeThatRequireAnEnum();
6 GenericTypeThatRequireAnEnum.age = 153;
7 GenericTypeThatRequireAnEnum tmp2 = new GenericTypeThatRequireAnEnum();
8 Console.WriteLine(GenericTypeThatRequireAnEnum.age);
9 //GenericTypeThatRequireAnEnum tmp3 = new GenericTypeThatRequireAnEnum();        //这句会报异常,因为类型实参不是每句类型

运行结果:

技术分享图片

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

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

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

上一篇:C#复制文件

下一篇:DRF之APIView源码解析


评论


亲,登录后才可以留言!