私は、ジェネリッククラスとC#で問題をしました:ジェネリッククラスの静的属性を初期化するにはどうすればよいですか?
class Hop<T>
{
static string x;
}
私はHop
のすべてのインスタンスに対してx
を初期化することはできますか?
たとえば、Hop.x = "test";
のようなものは機能しません。
私は、ジェネリッククラスとC#で問題をしました:ジェネリッククラスの静的属性を初期化するにはどうすればよいですか?
class Hop<T>
{
static string x;
}
私はHop
のすべてのインスタンスに対してx
を初期化することはできますか?
たとえば、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"はすべてのホップのために同じでなければならない
あなたはコンパイル時に初期化が必要な場合は、あなたが書くことができます。
class Hop<T>
{
static string x = "Foo";
}
より複雑な初期化のために、あなたはクラス初期化子を使用することができますが:
class Hop<T>
{
static string x;
static Hop()
{
x = "Foo";
}
}
xがプライベートで、 – mtijn
それは公開するIこのようなパターンに対しては強く勧めます。すべての一般的な実装間でデータを共有することは躊躇されます。 – Tejs