一个静态泛型类可以有多个单个实例吗?通用静态类有多个实例?
标准静态类只有一个实例,对吗?就像这样:
public static class MyClass
{
public static string MyString { get; set; }
}
public void ExampleMethod(int id)
{
if (id > 0)
MyClass.MyString = id.ToString();
}
无处不在我的计划,MyClass
代表一个单一实例,即应用范围的。
好的,但是,如果MyClass
是通用的呢?
public static class MyClass<T>
{
public static string MyString { get; set; }
public static T MyT { get; set; }
}
意味着对于指定每种类型的参数,我应用范围将创建一个新的实例?或者它会为每个可能的类型参数创建一个单独的实例? (我真希望事实并非如此)
对于逻辑,它不能仍然是一个实例,因为我可以做:
public void ExampleMethod(int id)
{
MyClass<int>.MyT = id;
MyClass<DateTime>.MyT = DateTime.Now;
MyClass<string>.MyT = "Hello, World";
MyClass<DayOfWeek>.MyT = DayOfWeek.Monday;
}
预先感谢所有答复
更新 - 微软的.Net团队已经使用
一不留神,我发现了一个静态泛型类的使用的一个例子,建成mscorlib
DLL:
// Decompiled with JetBrains decompiler
// Type: EmptyArray`1
// Assembly: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 7D59CE68-D0F6-428F-B71C-C8D703E59C19
// Assembly location: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll
internal static class EmptyArray<T>
{
public static readonly T[] Value = new T[0];
}
该类的存在意味着应用程序范围将创建一个空数组(如果尚未为给定类型创建的话(也许数组是内存猎手对象)。
这并不是说有多个实例,但有多种类型。 'MyClass'是与“MyClass ”不同的类型。没有实例。 –