>백엔드 개발 >C++ >C# 매개 변수 전달은 실제로 어떻게 작동합니까 : 값 대 참조?

C# 매개 변수 전달은 실제로 어떻게 작동합니까 : 값 대 참조?

DDD
DDD원래의
2025-01-31 00:36:10297검색

C# 매개 변수 전송 : 값 전송 및 참조 전송에 대한 두 번째 토론 How Does C# Parameter Passing Really Work: Value vs. Reference?
c#에서 값 전송 및 참조 전송은 프로그래머가 가져야 할 기본 개념입니다. 비 원래 유형이 일반적으로 전송되는 것으로 간주되지만, 특정 비 원래 객체 (예 : System.Drawing.Image)의 상황이 항상 그렇지는 않습니다.

System.Drawing.Image 객체의 특수성

System.Drawing.image 객체를 메소드에 전달하고 이미지를로드 할 때 일반적으로 원래 객체가 반환 후 이러한 변경 사항을 반영 할 것으로 예상합니다. 그러나 이것은 System.Drawing.image의 경우가 아닙니다. 통화 방법의 변경 사항은 복구 수신자를 확산시키지 않으므로 혼란을 유발합니다. "참조 전송"의 진실

이 오해는 참조의 의미에 대한 오해에서 비롯됩니다. C#에서는 객체 자체가 전송되지 않습니다. 반대로, 그 값은 초기 매개 변수의 값에 전달됩니다. 참조 유형의 경우 이러한 값은 객체 자체에 대한 참조입니다. 따라서 호출 메소드에서 객체 자체에 의한 변경 사항은 콜 당사자에게 표시됩니다.

그러나 중요한 것은 매개 변수 자체의 값 (즉, 객체에 대한 참조)의 값이 참조에 따라 전달되지 않는다는 점에 유의하는 것입니다. 즉, 매개 변수에 새 값이 할당되고 다른 객체를 인용하면 콜 당사자는이 변경 사항을 볼 수 없습니다.

솔루션 : 기준 전송 표현

호출 부분 자체가 표시되도록하려면 통화를 전달해야합니다. 매개 변수가 값 유형인지 참조 유형인지 여부에 관계없이, 또는 수정 자로 구현할 수 있습니다. 이러한 수정자를 사용함으로써 매개 변수는 실제로 참조에 따라 전달되며,이 방법에서 변경 사항은 호출 당사자에 반영됩니다.

이 개념을 설명하려면 다음 예를 고려하십시오.

첫 번째 예제에서, 매개 변수는 값으로 전달되며 매개 변수 자체의 변경은 콜 당사자에게 보이지 않습니다. 두 번째 예제에서, 수정 자식 공식은 기준 파라미터에 따라 표시되며, 이는 매개 변수 자체에 표시됩니다. 세 번째 예에서는 매개 변수 값이 객체에 대한 참조이기 때문에 매개 변수는 참조로 전달되지만 객체 자체의 변경 사항이 표시됩니다. 결론

C# 참조 전송은 미묘한 개념이며, 그 행동은 항상 우리의 직관에 의해 예상되는 것은 아닙니다. 전송 객체와 참조 전송 값의 차이를 이해하는 것은 예상대로 실행되는 코드에 필수적입니다.

위 내용은 C# 매개 변수 전달은 실제로 어떻게 작동합니까 : 값 대 참조?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.