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>();        //這句會報異常,因為類型實參不是每句類型

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM