C# の自動実装プロパティは、データのカプセル化に対する合理的なアプローチを提供します。 ただし、これらのプロパティを直接変更しようとすると、「戻り値を変更できません」というイライラするコンパイラ エラーが発生する可能性があります。
このエラーは、自動実装されたプロパティがアクセス時に基になるデータのコピーを返すために発生します。 したがって、このコピーに対する変更は永続化されません。元の保存値には影響しません。
次の例を見てください:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // Results in CS1612 error</code>
Point
が値型 (構造体) であるため、エラーが発生します。 Origin
にアクセスすると、直接参照ではなくコピーが提供されます。コピーの X
プロパティを変更しても、元の Origin
は変更されません。
解決策には、参照型 (クラス) を使用するか、中間変数を使用することが含まれます。 修正されたアプローチは次のとおりです:
<code class="language-csharp">Origin = new Point(10, Origin.Y);</code>
このコードは、更新された Point
座標を使用して新しい X
オブジェクトを作成し、それを Origin
プロパティに割り当て直します。 Origin
は参照型であるため、この変更はバッキング ストアに正しく反映されます。
以上がC# の自動実装プロパティを変更すると「戻り値を変更できません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。