我在C#中遇到一个泛型类的问题:
class Hop<T>
{
static string x;
}
我可以为x
的所有实例初始化Hop
吗?
例如Hop.x = "test";
之类的东西不起作用。
答案 0 :(得分:4)
问题是,没有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>
类型。
答案 1 :(得分:0)
如果需要编译时初始化,可以写:
class Hop<T>
{
static string x = "Foo";
}
对于更复杂的初始化,您可以使用类初始值设定项:
class Hop<T>
{
static string x;
static Hop()
{
x = "Foo";
}
}