using System;
using System.Collections.Generic;
using System.Text;
namespace CLRSupportExample
{
public class MyList<T>
{
private static int objCount = 0;
public MyList()
{
objCount++;
}
public int Count
{
get
{ return objCount; }
}
}
}
//Program.csnamespace CLRSupportExample
{
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.ReadLine();
}
}
} 这段代码的运行结果是 22112 不太明白为什么是这个结果?
2.MyList<double>实际上是另一个类型了,他会对类进行再次初始化,这时它的Count为1.
3.MyList<SampleClass>是第三种类型,在第四个输出命令时,他只实例化了一次,这时它输出的Count为1。
4.第五个输出命令仍然是MyList<SampleClass>类型的,但是它是在输出是才实例化的,所以它不会影响到第4个输出命令,只会影响自己本身,所以第五次输出的Count为2.这里需要注意的是,MyList看上去是一个类型,实际上在泛型里面是MyList<T>,根据T的不同,实际上是不同的类型。
public MyList()
{
objCount++;
}静态变量,在初始化时调用,初始化两次,自然就是2了