C# の「戻り値を変更できません」エラーの詳細な説明
C# の自動実装プロパティは、プロパティを定義する便利な方法を提供しますが、プロパティ値を変更しようとすると、「戻り値を変更できません」エラーが発生する場合があります。
次のコードを参照してください:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 产生 CS1612 错误</code>
このコードは、Origin プロパティの X 座標を設定しようとします。ただし、プロパティの戻り値は変数ではないため変更できないというエラーが報告されます。
根本原因: 値の型と参照型
このエラーは、Point が値型 (構造体) であるために発生します。値の型は値ごとにコピーされます。つまり、値の型を変数に割り当てると、新しいコピーが作成されます。この場合、Origin プロパティにアクセスすると、実際にはクラスに格納されている元の値ではなく、Point 値のコピーにアクセスすることになります。
解決策
この問題を解決するには、2 つのオプションがあります:
<code class="language-csharp">Point temp = Origin; temp.X = 10; Origin = temp;</code>
プロパティ値を一時変数に保存すると、値の型の変更可能なコピーが作成されます。その後、変更したコピーにプロパティを設定できます。
以上が自動実装されたプロパティを変更すると、C# が「戻り値を変更できません」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。