如何初始化泛型类中的静态属性?

时间:2011-08-25 15:46:38

标签: c# templates

我在C#中遇到一个泛型类的问题:

class Hop<T>
{
     static string x;
}

我可以为x的所有实例初始化Hop吗?

例如Hop.x = "test";之类的东西不起作用。

2 个答案:

答案 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";
   }
}