using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace Test
{
public class MyList<T>
{
private static int objCount = 0;
public MyList()
{
objCount++;
}
public int Count
{
get
{
return objCount;
}
}
}
public class Prime
{
class SampleClass
{ }
class Program
{
static void Main(string[] args)
{
MyList<int> myIntList = new MyList<int>();
MyList<int> myIntList2 = new MyList<int>();
MyList<double> myDoubleList = new MyList<double>();
MyList<SampleClass> mySampleList = new MyList<SampleClass>();
Console.WriteLine(myIntList.Count);
Console.WriteLine(myIntList2.Count);
Console.WriteLine(myDoubleList.Count);
Console.WriteLine(mySampleList.Count);
Console.WriteLine(new MyList<SampleClass>().Count);
Console.ReadKey();
}
}
}
}
輸出:
2
2
1
1
2
分析:
注意這條語句private static int objCount = 0;這是個靜態變量,相同類型的參數只會執行一遍。
MyList<int> myIntList = new MyList<int>(); //傳遞過去的是int類型 objCount+1
MyList<int> myIntList2 = new MyList<int>(); // 傳過去的還是int類型 objCount再+1
所以輸出的值就爲2。
MyList<double> myDoubleList = new MyList<double>();
//傳遞過去的是double類型,那麼重新執行一下 private static int objCount = 0; 且objCount+1
MyList<SampleClass> mySampleList = new MyList<SampleClass>();
//同理傳過去的類型又變了,所以又執行一下private static int objCount = 0; 且objCount+1
所以後面的輸出就是1,1。
Console.WriteLine(new MyList<SampleClass>().Count);
因爲輸出之前又一次實例化了MyList<SampleClass>這個類型,所以在上一次的objCount再+1
所以輸出2。