나는이 코드 조각을 발견하고 개발자가 대신 리터럴 상수 문자열의 문자 배열과 문자열 생성자를 사용하는 이유를 이해하고 싶습니다 :왜 상수에 char 배열로 문자열 생성자를 사용합니까?
이static string atomLang = new String("lang".ToCharArray());
나는이 코드 조각을 발견하고 개발자가 대신 리터럴 상수 문자열의 문자 배열과 문자열 생성자를 사용하는 이유를 이해하고 싶습니다 :왜 상수에 char 배열로 문자열 생성자를 사용합니까?
이static string atomLang = new String("lang".ToCharArray());
내가 생각할 수있는 유일한 이유가있다 문자열의 interned instance에 대한 참조를 얻지 마십시오.
string str1 = "lang";
string str2 = "lang";
string str3 = new String("lang".ToCharArray());
Console.WriteLine(object.ReferenceEquals(str1, str2)); // Output: true
Console.WriteLine(object.ReferenceEquals(str1, str3)); // Output: false
이것은 실제 성능에 영향을 미치지 않습니다 (성능 차이는 제외).
문자열 풀링을 피하려면? – emesx
코드를 좀 더 재미있게 만들려고 노력했을 수도 있습니다. :)). 나는 그 점에 대해 유감 스럽지만 농담을 말하는 것에 저항 할 수 없었다. –
아마도 문자열로 초기화하고 싶다면'static string atomLang = "lang"'을 사용할 수 있습니다. 이미 문자열이 있다면'new'를 사용해야하는 이유는 무엇입니까? – benjer3