是否在类型之间共享generics类的静态成员

我正在尝试创建一个generics类,它将根据类型具有一些静态函数。 每种类型都有静态成员吗​​? 或者只有在使用通用的地方? 我问的原因是我想要每种类型的锁对象,而不是它们之间共享的对象。

所以,如果我有

class MyClass where T:class { static object LockObj = new object(); static List ObjList = new List(); } 

我理解ObjList肯定会为每个使用的generics类型创建一个不同的对象,但LockObj在每个generics实例化( MyClassMyClass )之间是不同的还是相同的?

请自己检查一下!

 public class Static { public static int Number { get; set; } } static void Main(string[] args) { Static.Number = 1; Static.Number = 2; Console.WriteLine(Static.Number + "," + Static.Number); } // Prints 1, 2 

对于每个T,它将是不同的。基本上,对于所有不同的T,您将具有不同的类型,并且不在不同类型之间共享成员。

C#中的实例化generics类型在运行时实际上是不同的类型,因此不会共享静态成员。