ホームページ > バックエンド開発 > C++ > C# で自動実装されたプロパティで「戻り値を変更できません」が発生するのはなぜですか?

C# で自動実装されたプロパティで「戻り値を変更できません」が発生するのはなぜですか?

Susan Sarandon
リリース: 2025-01-19 09:42:09
オリジナル
957 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート