2012-03-14 2 views

답변

2

아니요. 이 코드는 직접 IL stloc 명령으로 변환됩니다. 기본적으로 다음과 같이 컴파일됩니다.

ldstr "text" 
stloc.0 
-2

내가 그것을 의심 - 왜 것 그것

그런데 왜 자신을 찾아 실행 ILDASM과 intern pool 저장을에서

7
string txt1 = "text"; 

로드 문자열 "text"을 생성 어떤 코드를 볼 수 없습니다 txt1 변수의 참조로 사용됩니다.

따라서, 예를 들어, 당신이있는 경우 다음 ReferenceEquals(txt2, txt3) == true

string txt2 = "text"; 
string txt3 = "text"; 

, 두 변수는 인턴 수영장에서 동일한 문자열 객체를 참조하기 때문이다.

String Constructor은 새로운 비 내부 문자열 개체를 만듭니다.

string txt4 = new String("text".ToCharArray()); 

so ReferenceEquals(txt1, txt4) == false.

예외가 있습니다. new String(new char[0])은 인턴 풀의 "" 문자열 개체에 대한 참조를 반환합니다.

관련 문제