首先查看下面的代码:
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++;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(MyList.Func<int>());
Console.WriteLine(MyList.Func<int>());
Console.WriteLine(MyList.Func<string>());
Console.ReadKey();
}
}
输出结果:
0
1
2