我在C#中的问题与通用类:如何初始化泛型类中的静态属性?
class Hop<T>
{
static string x;
}
我可以初始化x
为Hop
所有的实例?
像Hop.x = "test";
这样的东西不起作用。
我在C#中的问题与通用类:如何初始化泛型类中的静态属性?
class Hop<T>
{
static string x;
}
我可以初始化x
为Hop
所有的实例?
像Hop.x = "test";
这样的东西不起作用。
问题是,没有Hop
类型,有一个Hop<T>
泛型类型。如何:
class Hop
{
static string X;
}
class Hop<T> : Hop
{
}
但你仍然有问题,是这样的:
Hop<string>.X = "hello";
string x = Hop<int>.X; // x == "hello".
静态字段是Hop
类型,而不是Hop<T>
类型。
我认为这对我的需求很好,“x”必须与所有Hop
如果您需要编译时初始化,你可以写:
class Hop<T>
{
static string x = "Foo";
}
对于更复杂的初始化,您可以使用一个类初始化:
class Hop<T>
{
static string x;
static Hop()
{
x = "Foo";
}
}
x是私有的,让公众 – mtijn
我会强烈推荐这样的模式;在所有通用实现中共享数据令人不敢恭维。 – Tejs