> 백엔드 개발 > C++ > C#의 자동 구현 속성에서 '반환 값을 수정할 수 없습니다'가 발생하는 이유는 무엇입니까?

C#의 자동 구현 속성에서 '반환 값을 수정할 수 없습니다'가 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-19 09:42:09
원래의
911명이 탐색했습니다.

Why Does

C#의 "반환 값을 수정할 수 없습니다." 오류

자동 구현 속성을 사용할 때 "반환 값을 수정할 수 없습니다." 오류가 발생할 수 있습니다. 예:

<code class="language-csharp">public Point Origin { get; set; }

Origin.X = 10; // 出现 CS1612 错误</code>
로그인 후 복사

오류 원인 분석

이 오류는 Point이 값 유형(구조체)이기 때문에 발생합니다. Origin 속성에 액세스하면 값 자체가 아닌 클래스에 포함된 값의 복사본이 반환됩니다. 복사본의 속성을 수정해도 원래 값에는 영향을 주지 않습니다.

솔루션

이 문제를 해결하려면 기본 값을 직접 수정해야 합니다. 값 유형의 경우 임시 변수에 복사본을 저장하고 해당 변수에 속성을 설정하면 됩니다.

<code class="language-csharp">Point originCopy = Origin;
originCopy.X = 10;
Origin = originCopy;</code>
로그인 후 복사

또는 자체 백업 필드를 만들어 값 유형을 저장하고 필드를 직접 수정할 수도 있습니다.

<code class="language-csharp">private Point _origin;
public Point Origin
{
    get { return _origin; }
    set { _origin = value; }
}</code>
로그인 후 복사

이런 방법으로 Origin 속성을 ​​직접 수정할 수 있습니다:

<code class="language-csharp">Origin.X = 10; // 此行现在可以正常工作,不会报错</code>
로그인 후 복사

위 내용은 C#의 자동 구현 속성에서 '반환 값을 수정할 수 없습니다'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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