2009-05-09 6 views
37

이 코드가 있습니다;C#의 정적 상수

using System; 

namespace Rapido 
{ 
    class Constants 
    { 
     public static const string FrameworkName = "Rapido Framework"; 
    } 
} 

비주얼 스튜디오는 저에게 말한다 : The constant 'Rapido.Constants.FrameworkName' cannot be marked static

은 어떻게 다른 클래스에서이 상수를 사용할 수 있도록 할 수 그것의 새 인스턴스를 만들 필요없이? (예 : Rapido.Constants.FrameworkName을 통해 직접 액세스)

답변

95
public static class Constants 
{ 
    public const string FrameworkName = "Rapido Framework"; 
} 
+2

제 생각에는 *이 * 실제로는 옳습니다. 그것을하는 방법. – Hemant

+1

입니다! ......... –

+0

죄송합니다. 나는 그것을 잘못 읽었습니다. 근데 왜 이럴거야? 이 클래스는 아무 것도 효과적으로 포함하지 않습니다. 그리고이 값을 변경하려면 모든 것을 다시 컴파일해야합니다. 이것을 정적 읽기 전용 필드로 만드는 것이 좋습니다. –

28

const는 이미 인스턴스간에 변경할 수 없으므로 정적입니다.

+0

오른쪽 ... 당신은 명시 적으로 ... 같은 – Cuga

+0

그것을 나타내는 때 그래서 내가 그게 구현 년대 방법을 이해 왜 컴파일러 balks을 이해하지 못하는 . 왜 그런 식으로하는지 묻습니다. – Cuga

+11

const와 static을 혼동하지 않도록주의하십시오. 다른 의미입니다. const는 항목의 값을 참조하고 static은 항목 저장소가 할당되는 방법을 나타냅니다. http://stackoverflow.com/questions/842609/why-does-c-not-allow-const-and-static-on-the-same-line/842649#842649 –

11

정적으로 선언 할 필요가 없습니다. public const string이면 충분합니다.

+3

사실 상수로 선언 할 필요가 없기 때문에 메모리 할당과 런타임 초기화가 필요하다는 것을 의미하기 때문에 정적으로 선언하는 것은 오류입니다. –

-4

다음과 같이 일정하게 만들 수 있습니다

public static readonly string kCustomTypeUID = @"CustomTypeUID"; 
관련 문제