zoukankan      html  css  js  c++  java
  • 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>();        //这句会报异常,因为类型实参不是每句类型

    运行结果:

  • 相关阅读:
    Oracle第一课
    Web前端试题
    E
    Kingdom of Black and White
    D. Let's Go Hiking
    2021牛客寒假 第一场
    Codeforces Round #691 (Div. 2)
    CF1461D
    CF1461B
    浙财16th校赛 F因子
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/10293421.html
Copyright © 2011-2022 走看看