이 오해는 참조의 의미에 대한 오해에서 비롯됩니다. C#에서는 객체 자체가 전송되지 않습니다. 반대로, 그 값은 초기 매개 변수의 값에 전달됩니다. 참조 유형의 경우 이러한 값은 객체 자체에 대한 참조입니다. 따라서 호출 메소드에서 객체 자체에 의한 변경 사항은 콜 당사자에게 표시됩니다.
그러나 중요한 것은 매개 변수 자체의 값 (즉, 객체에 대한 참조)의 값이 참조에 따라 전달되지 않는다는 점에 유의하는 것입니다. 즉, 매개 변수에 새 값이 할당되고 다른 객체를 인용하면 콜 당사자는이 변경 사항을 볼 수 없습니다.
솔루션 : 기준 전송 표현
호출 부분 자체가 표시되도록하려면 통화를 전달해야합니다. 매개 변수가 값 유형인지 참조 유형인지 여부에 관계없이, 또는 수정 자로 구현할 수 있습니다.
이러한 수정자를 사용함으로써 매개 변수는 실제로 참조에 따라 전달되며,이 방법에서 변경 사항은 호출 당사자에 반영됩니다.
예
이 개념을 설명하려면 다음 예를 고려하십시오.
첫 번째 예제에서, 매개 변수는 값으로 전달되며 매개 변수 자체의 변경은 콜 당사자에게 보이지 않습니다. 두 번째 예제에서, 수정 자식 공식은 기준 파라미터에 따라 표시되며, 이는 매개 변수 자체에 표시됩니다. 세 번째 예에서는 매개 변수 값이 객체에 대한 참조이기 때문에 매개 변수는 참조로 전달되지만 객체 자체의 변경 사항이 표시됩니다.
결론
C# 참조 전송은 미묘한 개념이며, 그 행동은 항상 우리의 직관에 의해 예상되는 것은 아닙니다. 전송 객체와 참조 전송 값의 차이를 이해하는 것은 예상대로 실행되는 코드에 필수적입니다.