Programming

const 문자열 대 c #의 정적 읽기 전용 문자열

procodes 2020. 8. 11. 21:38
반응형

const 문자열 대 c #의 정적 읽기 전용 문자열


C #에서 차이점은 무엇입니까

static readonly string MyStr;

const string MyStr;

const문자열 을 사용 하면 컴파일러는 compile-time에 문자열의 값 을 포함합니다 .
따라서 const다른 어셈블리 값을 사용한 다음 원래 어셈블리를 업데이트하고 값을 변경하면 다시 컴파일때까지 다른 어셈블리에 변경 내용이 표시되지 않습니다 .

static readonly문자열은 런타임에 찾아 지는가 일반 필드입니다. 따라서 다른 어셈블리에서 필드 값이 변경되면 다시 컴파일하지 않고 어셈블리가로드되는 즉시 변경 내용이 표시됩니다.

이것은 또한 것을 의미 static readonly문자열과 같은 일정하지 않은 부재, 사용 Environment.UserName또는 DateTime.Now.ToString(). const문자열은 다른 상수 또는 리터럴을 사용하여 초기화 할 수 있습니다.
또한 static readonly문자열은 정적 생성자에서 설정할 수 있습니다. const캐릭터는 초기화 된 인라인 될 수 있습니다.

a static string는 수정할 수 있습니다. static readonly대신 사용해야 합니다.


다음은 장단점에 대한 좋은 분석입니다 .

따라서 값이 변경 될 가능성이 거의 없거나 외부 앱 / libs가 상수를 사용하지 않을 경우 상수를 사용해야하는 것으로 보입니다. 런타임 계산이 필요하거나 외부 소비자가 요인 인 경우 정적 읽기 전용 필드를 사용해야합니다.


빠른 답변 :

public const string MyStr; 

이다 컴파일 시간 이 같은 기술을 사용하는 경우 상수 (당신은 예를 들어, 메서드 매개 변수에 대한 기본 매개 변수로 사용할 수 있습니다), 그리고 그것은 난독 화되지 않습니다

public static readonly string MyStr;

이다 런타임 은 응용 프로그램이 시작되지 전에 때 그것을 평가하는 것을 의미, 정수입니다. 이것이 예를 들어 메소드 (컴파일 오류)의 기본 매개 변수로 사용할 수없는 이유입니다. 저장된 값은 난독 화 될 수 있습니다.


OQ는 static stringconst. 둘 다 서로 다른 사용 사례를 가지고 있습니다 (둘 다 정적으로 취급되지만).

const는 정말 일정한 값에만 사용하십시오 (예 : 빛의 속도-그러나 이것은 매체에 따라 다릅니다). 이 엄격한 지침의 이유는 const 값이이를 참조하는 어셈블리의 const 사용으로 대체되기 때문입니다. 즉, 정의 위치에서 const가 변경되면 버전 관리 문제가 발생할 수 있습니다 (즉, 상수가 아니어야 함). 아무튼). private const다른 어셈블리에 기본 및 하위 클래스가있을 수 있고 개인 필드가 상속 되기 때문에 이것은 필드 에도 영향을줍니다 .

정적 필드는 선언 된 유형에 연결됩니다. 주어진 유형의 모든 인스턴스에 대해 동일해야하는 값을 나타내는 데 사용됩니다. 이러한 필드는 원하는만큼 여러 번 쓸 수 있습니다 (읽기 전용으로 지정되지 않은 경우).

static readonlyvs 를 의미했다면 미래의 증거이기 때문에 거의 모든 경우에 const권장 static readonly합니다.


const 문자열을 사용할 때 컴파일러는 컴파일 타임에 문자열의 값을 포함합니다. 따라서 다른 어셈블리에서 const 값을 사용한 다음 원본 어셈블리를 업데이트하고 값을 변경하면 다시 컴파일 할 때까지 다른 어셈블리에 변경 사항이 표시되지 않습니다.

정적 읽기 전용 문자열은 런타임에 조회되는 일반 필드입니다. 따라서 다른 어셈블리에서 필드의 값이 변경되면 어셈블리가로드되는 즉시 다시 컴파일하지 않고 변경 내용이 표시됩니다.


당신은의 값을 변경할 수 있습니다 static readonly string단지에 static당신이 값은 변경할 수 없습니다 반면, 클래스 또는 변수 초기화의 생성자 const문자열 어디서나.

참고 URL : https://stackoverflow.com/questions/3190870/const-string-vs-static-readonly-string-in-c-sharp

반응형