C# 문자열 동작 및 참조 전달 이해
C# 문자열은 참조 유형임에도 불구하고 수정과 관련하여 고유한 동작을 나타냅니다. 다음 코드는 이를 보여줍니다. 메서드 내에서 문자열을 수정해도 원래 문자열 변수는 변경되지 않습니다.
<code class="language-csharp">class Test { public static void Main() { string test = "before modification"; Console.WriteLine(test); ModifyString(test); Console.WriteLine(test); // Still "before modification" } public static void ModifyString(string test) { test = "after modification"; } }</code>
이는 문자열이 참조 유형이지만 메서드가 문자열 참조의 사본(값별 전달)을 받기 때문에 발생합니다. 복사된 참조를 변경해도 원본에는 영향을 주지 않습니다. 게다가 C#의 문자열은 변경할 수 없습니다. 캐릭터를 직접 변경할 수는 없습니다. 대신 문자열 변수에 새 값을 할당하면 새 문자열 개체가 생성됩니다.
참조로 문자열 수정
원래 문자열을 수정하려면 ref
키워드를 사용하세요.
<code class="language-csharp">class Test { public static void Main() { string test = "before modification"; Console.WriteLine(test); ModifyString(ref test); Console.WriteLine(test); // Now "after modification" } public static void ModifyString(ref string test) { test = "after modification"; } }</code>
ref
을 사용하면 이 메서드는 원래 문자열 변수에 대한 참조를 직접 받습니다. 메서드 내에서 새 값을 할당하면 원래 변수의 참조가 업데이트됩니다. 이는 진정한 참조별 전달 동작을 보여줍니다. ref
을 사용해도 여전히 새 문자열 개체를 생성한다는 점에 유의하세요. 참조는 단순히 이 새 객체를 가리키도록 업데이트됩니다.
위 내용은 C# 메서드에서 문자열을 수정해도 원래 문자열이 변경되지 않는 이유는 무엇이며 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!