> 백엔드 개발 > C++ > C#은 객체 전달을 어떻게 처리합니까?

C#은 객체 전달을 어떻게 처리합니까?

DDD
풀어 주다: 2025-01-31 00:41:12
원래의
964명이 탐색했습니다.

-C# How Does C# Handle Object Passing: Pass-by-Value or Pass-by-Reference?
의 대상에 대한 이해 관계 일반적으로 C#에서 원래 유형의 C# 변수는 참조로 전달되며 원래 유형의 값은 값으로 전달됩니다. 그러나 System.Drawing.Image와 같은 참조 유형 객체를 처리 할 때 예외가 발생합니다.

이미지 객체의 비정상적인 동작

이미지 객체를 메소드로 전달할 때이 메소드의 변경 사항은 메소드가 반환 된 후 원래 객체에 반영되지 않습니다. 이것은 예상되는 인용 시맨틱과 비슷합니다.

전송 된 가치의 진실

일반적인 인식의 반대, 대상 자체는 직접 통과되지 않습니다. 대신, 그들의 값은 방법의 초기 매개 변수로 평가되고 전달됩니다. 참조 유형의 경우이 값은 기존 객체에 대한 참조입니다. 객체의 수정은 발신자에게 보입니다. 그러나 매개 변수는 다른 객체를 참조하며, 이는 호출 메소드에 반영되지 않습니다. 모든 매개 변수가 기본적으로 전달되기 때문입니다. 통과

실제 참조 전송 동작을 달성하려면 REF 또는 OUT 키워드를 사용해야합니다. 이러한 키워드는 매개 변수의 값과 스토리지 위치 및 매개 변수 공유를 보장합니다. 따라서, 매개 변수의 수정은 호출 방법에 의해 관찰 될 것이다.

요컨대, 참조 유형 객체가 원래 값을 전달했지만 참조를 수정할 수 있으며 참조 객체에 의한 변경 사항은 통화에 표시됩니다. 그러나 새 개체의 할당이 매개 변수에 할당되면 콜백 메소드가 퍼지지 않습니다. 실제 참조 전송 동작을 달성하려면 Ref 또는 Out을 명시 적으로 사용해야합니다.

위 내용은 C#은 객체 전달을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿