>백엔드 개발 >C++ >C# 전달 객체를 메소드 : 참조 또는 값으로 어떻게 처리합니까?

C# 전달 객체를 메소드 : 참조 또는 값으로 어떻게 처리합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-31 00:31:09333검색

C#에서 객체 전송에 대한 에서 : 참조 및 값 How Does C# Handle Passing Objects to Methods: Reference or Value?
에서 논의합니다. C#에서, 메소드에 대한 전송 객체는 항상 기본 개념이었습니다. 비 원래 유형은 기준으로 전달되는 것으로 여겨지고 원래 값은 값으로 전달됩니다.

그러나 예외가 나타납니다. System.Drawing.image 객체가 메소드로 전달 되고이 메소드에서 이미지가 수정되면 원래 이미지 객체는 콜 파티를 반환 한 후에도 변경되지 않은 상태로 유지됩니다.

진실을 밝힙니다. 이 현상을 이해하려면 C#의 물체가 전송 한 물체의 진정한 본질을 명확히해야합니다. 반대로 객체 자체는 전송되지 않습니다. 참조 유형의 경우이 값은 실제 객체에 대한 참조이며, 콜 당사자의 기본 개체를 변경할 수 있습니다. 값 전송과 기준 전송 사이의 미묘한 차이 기본적으로 C#은 모든 유형 (참조 유형 포함)에 "값 전송"을 사용합니다. 이것은 객체의 사본이 매개 변수의 초기 값으로 전달됨을 의미합니다. 매개 변수 값을 변경하면 원래 객체에 영향을 미치지 않습니다.

메소드 내부의 객체의 속성 값을 변경하려면 "참조 전송"을 매개 변수 문에서 키워드를 지정하거나 REF 참조하여 사용할 수 있습니다. 이 경우 매개 변수는 매개 변수와 동일한 메모리 위치를 효과적으로 참조하고 매개 변수 변경이 호출에 표시됩니다.

샘플 코드 :

결론

"값 전송"및

c#의 "value 전송"및 "참조 전송"의 개념은 전통적인 이해와 다릅니다. 대조적으로, 파라미터의 값은 사본 (값 유형) 또는 참조 (참조 유형)로 전송됩니다. 메소드 내부의 객체의 속성 값을 변경하려면 참조 및 패스에 Out 또는 Ref 키워드를 사용할 수 있습니다.

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

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