C# 문자열 불변성 및 String.replace ()
C# 개발자의 공통적 인 혼란 원인은 방법의 동작입니다. 많은 사람들이 원래 문자열을 수정할 것으로 기대하지만 그렇지 않습니다. C#의 문자열은 불변이기 때문입니다
를 로 바꾸어 로 로 변경하고 싶다고 가정 해 봅시다. 시도 :
String.Replace()
"C:\Users\Desktop\Project\bin\Debug"
는 원래 문자열을 변경하지 못합니다. 이유? returns "C:\Users\Desktop\Project\Resources\People"
교체가있는 새 문자열을 반환합니다. 원본을 바꾸지 않습니다. "\bin\Debug"
솔루션 : 재 할당 "\Resources\People"
를 올바르게 사용하려면 반환 된 수정 문자열을 변수에 할당해야합니다.
원래 변수를 덮어 쓸 수도 있습니다
-
path.Replace(@"\bin\Debug", @"\Resource\People");
불변성 이해 -
이 행동은 C#의 현의 기본 불변성에서 비롯됩니다. 문자열을 수정하는 것처럼 보이는 모든 작업은 실제로 새 문자열 객체를 만듭니다. 이것은 모든 문자열 메소드에 적용되어 메모리 관리에 영향을 미칩니다. C# 문서는이 특성을 명확하게 나타냅니다. 예상치 못한 결과를 피하기 위해 문자열로 작업 할 때 이것을 기억하십시오.
path.Replace("\bin\Debug", "\Resource\People");
위 내용은 String.place가 C#에서 내 문자열을 수정하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!