C#에서 객체 전송에 대한 에서 : 참조 및 값
에서 논의합니다.
C#에서, 메소드에 대한 전송 객체는 항상 기본 개념이었습니다. 비 원래 유형은 기준으로 전달되는 것으로 여겨지고 원래 값은 값으로 전달됩니다.
그러나 예외가 나타납니다. System.Drawing.image 객체가 메소드로 전달 되고이 메소드에서 이미지가 수정되면 원래 이미지 객체는 콜 파티를 반환 한 후에도 변경되지 않은 상태로 유지됩니다.
진실을 밝힙니다.
이 현상을 이해하려면 C#의 물체가 전송 한 물체의 진정한 본질을 명확히해야합니다. 반대로 객체 자체는 전송되지 않습니다. 참조 유형의 경우이 값은 실제 객체에 대한 참조이며, 콜 당사자의 기본 개체를 변경할 수 있습니다.
값 전송과 기준 전송 사이의 미묘한 차이
기본적으로 C#은 모든 유형 (참조 유형 포함)에 "값 전송"을 사용합니다. 이것은 객체의 사본이 매개 변수의 초기 값으로 전달됨을 의미합니다. 매개 변수 값을 변경하면 원래 객체에 영향을 미치지 않습니다.
메소드 내부의 객체의 속성 값을 변경하려면 "참조 전송"을 매개 변수 문에서 키워드를 지정하거나 REF 참조하여 사용할 수 있습니다. 이 경우 매개 변수는 매개 변수와 동일한 메모리 위치를 효과적으로 참조하고 매개 변수 변경이 호출에 표시됩니다.
샘플 코드 :
결론
"값 전송"및 c#의 "value 전송"및 "참조 전송"의 개념은 전통적인 이해와 다릅니다. 대조적으로, 파라미터의 값은 사본 (값 유형) 또는 참조 (참조 유형)로 전송됩니다. 메소드 내부의 객체의 속성 값을 변경하려면 참조 및 패스에 Out 또는 Ref 키워드를 사용할 수 있습니다.
위 내용은 C# 전달 객체를 메소드 : 참조 또는 값으로 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!