天天看點

改善C#程式的157個建議——建議33學習筆記:避免在泛型類型中聲明靜态成員

首先檢視下面的代碼:

 public class MyList<T>

   {

       public static int Count { get; set; }

       public MyList()

       {

           Count++;

       }

   }

   class Program

       static void Main(string[] args)

           MyList<int> list1 = new MyList<int>();

           MyList<int> list2 = new MyList<int>();

           MyList<string> list3 = new MyList<string>();

           Console.WriteLine(MyList<int>.Count);

           Console.WriteLine(MyList<string>.Count);

           Console.ReadKey();

輸出的結果:

2

1

從輸出結果可以看出來,不同的資料類型,他們之間的靜态成員是不共享的,同一資料類型之間可以共享靜态成員。但是非泛型類型中的泛型方法并不會再運作時的本地代碼中生成不同的類型。例:

 public class MyList

       public static int Count { get; set; }  

       public static int Func<T>()      

        {

           return Count++;

           Console.WriteLine(MyList.Func<int>());

           Console.WriteLine(MyList.Func<string>());

輸出結果: