C#에서 전달하는 배열 참조에 대한 심층적인 이해
C#에서 배열은 기본 데이터 유형과 다릅니다. 참조 유형입니다. 이는 다음과 같은 질문을 던집니다: 배열이 메소드에 어떻게 전달됩니까? 값으로 전달합니까, 아니면 참조로 전달합니까?
값 전달
기본적으로 배열 참조는 값으로 전달됩니다. 이는 참조 복사본이 생성되어 메서드에 전달됨을 의미합니다. 메서드 내부의 배열 내용에 대한 변경 사항은 호출 코드에 표시되지만 배열 자체에 대한 재할당은 호출자에게 다시 전파되지 않습니다.
참조로 전달
참조 자체를 수정하려면 ref
수정자를 사용할 수 있습니다. 참조로 배열을 전달하면 호출자가 재할당을 포함하여 참조에 대한 모든 변경 사항을 볼 수 있습니다.
예
다음 코드는 값 전달과 참조 전달의 차이점을 보여줍니다.
<code class="language-csharp">void Foo(int[] data) { data[0] = 1; // 调用方可见此更改 } void Bar(ref int[] data) { data = new int[20]; // 调用方可见此更改 }</code>
Foo
을 호출하면 참조 사본이 전달됩니다. Foo
내의 배열 내용을 변경하면 호출 코드에 표시됩니다. 그러나 Foo
내의 배열에 대한 재할당은 호출자에게 표시되지 않습니다.
반대로 ref
수정자를 사용하여 Bar
을 호출하면 참조 자체가 전달됩니다. 재할당을 포함하여 참조에 대한 모든 변경 사항은 호출 코드에 표시됩니다.
위 내용은 C#에서는 배열이 메서드에 어떻게 전달되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!