나는 일반적인 클래스와 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