문제

이 세 가지 예를 고려하십시오.

예 a

string message = "Hello world!";
throw new System.Exception(message);

예 B.

const string message = "Hello world!";
throw new System.Exception(message);

예 c

throw new System.Exception("Hello world!");

다른 사람보다 하나를 사용할 이유가 있습니까? 구체적으로, 가능한 경우 const 문자열을 사용해 보지 말아야합니다 (문자열이 수정되지 않았다고 가정) 예제 B가 가장 좋습니까? 예 C에서는 어떻게됩니까?

위의 IL이 동일하거나 다른지, 그리고 차이가 있는지 묻는 것 같습니다. 나는 그 차이가 작고 아마도 걱정할 것이 없다는 것을 알고 있습니다. 나는 이것이 학문적 질문이라고 생각합니다.


편집하다. 여기 IL이 있습니다

IL_0014: ldstr "This is a string"
IL_0019: stloc.0
IL_001a: ldloc.0
IL_001b: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_0020: throw


IL_0033: nop
IL_0034: ldstr "This is a const string"
IL_0039: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_003e: throw

IL_0051: nop
IL_0052: ldstr "This is an inline string."
IL_0057: newobj instance void [mscorlib]System.Exception::.ctor(string)
IL_005c: throw

나에게 실질적으로 동일하게 보인다.

도움이 되었습니까?

해결책 2

성능, 메모리 사용 또는 문자열 테이블 효율성 측면에는 차이가 없습니다.

Const 키워드의 유일한 효과는 문자열이 다시 할당 될 때 컴파일 시간 오류를 생성하는 것입니다. 따라서 다른 개발자에게 귀하의 의도를 전달하기 위해 Const를 추가하는 것이 도움이됩니다.

다른 팁

실제로 상황에 따라 다릅니다. 이 메시지가 변경 될까요? 옵션 A를 사용하는 경우 문자열 메시지의 값을 수정할 수있는 기회가 있습니다. 다른 두 개는 하드 코드 된 문자열을 인쇄하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top