2009-10-08 8 views

답변

0

개인적으로 나는 static readonly을 선호하지만 그것은 내 편이 난독 화 때문입니다.

+0

차이가 있습니다. 정적 읽기 전용은 여전히 ​​정적 생성자에서 수정할 수 있습니다. – recursive

+0

사실,하지만 그것은 나를위한 요점입니다. const를 난독화할 수는 없습니다. –

4

정수형 또는 기타 상수/정적 데이터 집합을 포함하는 형식을 만드는 경우 C#의 정적 클래스를 사용하는 것이 가장 좋습니다. 정적 데이터/메소드 만 포함하기 위해 특별히 설계되었습니다.

public static class Constants { 
    public const int SomeValue = 42; 
} 
1

INT에서 상속 열거하고보십시오 : 당신이 1과 첫 번째 값을 지정하면

public enum Values : int 
{ 
    ValueOne = 1, 
    ValueTwo, 
    ValueThree, 
    ... 
} 

을 다음 ValueTwo이 ValueThree 3 등이 될 것이다, 2 될 것입니다 자동으로 모든 값을 증가 명시 적으로 지정된 값 다음에 명시 적으로 다른 값을 지정할 때까지.

가 int 값을 얻으려면, 당신은 단지 캐스팅 :

int value = (int)Values.ValueOne; 
2

정수는 무엇을 represeent합니까?

절대 변경하지 않는 가치있는 항목이라면 열거 형을 고려해보십시오.

정수를 사용하기 위해 실제로 클래스를 인스턴스화 할 필요가없는 경우 다른 옵션은 정적 클래스입니다.

정수가 필요한 것이 필요한 경우 확실히 도움이 될 것입니다.

4

어째서 상수을 의미합니까? 하나의 인스턴스 내에서 또는 전체 programm에서 값이 변경되지 않습니까?

후자의 경우 enum을 고려해야합니다.

public enum Foo { 
    bla = 42 
} 
3

값이 절대로 변경되지 않으면 상수가 올바르게 작동합니다. 컴파일러는 상수에 대한 참조를 리터럴 값으로 대체하므로 코드에 직접 값을 넣는 것과 동일한 성능을 얻습니다.

값이 향후 변경해야 할 수 있습니다, 당신은 대신 속성 사용할 수 있습니다 : 다른 프로젝트에서 속성을 사용하는 경우

public static int Answer { get { return 42; } } 

, 그리고 재산이 어디 나중에 프로젝트를 다시 컴파일 해당 dll을 배포하면 응용 프로그램은 새 값을 사용합니다. 대신 상수를 사용했다면 전체 응용 프로그램을 다시 컴파일해야합니다.

+0

이것은 장황한 해결책이지만 길 아래쪽에서 가장 유연합니다. 나는 그것을 늦게 사용 해왔다.Guffa의 예제에 추가 할 한 가지는 인스턴스가 아닌 정적 속성으로 만드는 것이고 정적 인 모든 것을 적용하기 위해 포함하는 클래스를 정적으로 만들 수도 있습니다. 이렇게하면 열거 형 스타일의 값에 액세스 할 수 있지만 클래스의 모든 유연성이 제공됩니다. –

+0

@ psasik : 좋은 점은 물론 속성이 정적이어야합니다. – Guffa

관련 문제