내가 쓸 때 : A.v
, B.v
및 C.v
의다른 정적 멤버 값은
public class A
{
public static int v;
}
public class B : A { }
public class C : A { }
값은 모두 동일합니다.
다른 정적 값을 저장하려면 어떻게해야합니까?
내가 쓸 때 : A.v
, B.v
및 C.v
의다른 정적 멤버 값은
public class A
{
public static int v;
}
public class B : A { }
public class C : A { }
값은 모두 동일합니다.
다른 정적 값을 저장하려면 어떻게해야합니까?
값은 모두 동일합니다.
다른 정적 값을 저장하려면 어떻게해야합니까?
수 없습니다. A.v
, B.v
및 C.v
은 모두 동일한 정적 필드를 참조하므로 서로 다른 값을 가질 수 없습니다.
가능한 해결 방법은 B
및 C
에 v
을 재 선언하는 것입니다 :
public class A
{
public static int v;
}
public class B : A
{
public static new int v;
}
public class C : A
{
public static new int v;
}
당신이 A.v
, B.v
및 C.v
효과적으로 다른 필드를 참조 할 것이다, 그래서 그들은 서로 다른 값을 가질 수있다, 그렇게한다면
합니다 (new
수정을 참고, 그것은 당신이 의도적으로 기본 클래스에서 멤버 숨어 있는지 컴파일러 말한다) 당신의 정확한 필요에 따라
을 faester의 솔루션은 더 좋을 수 있습니다.
다시 신고하지 않으면 불가능한 것 같습니다. – Yves
그나마 그들을 정적 만들하지만 같은 효과를 얻을 가상 읽기 전용 속성을 사용 : A.v, B.v 및 C.v의
public class A
{
public virtual int v { get { return 1; } }
}
public class B : A { }
public class C : A
{
public override int v
{
get { return 2; }
}
}
정적 일 수는 없습니다. –
그 효과를 원하지 않는다면 왜 같은 수업에서 파생됩니까? – jAC
http://msdn.microsoft.com/en-us/library/vstudio/79b3xss3.aspx – MahanGM