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

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

DDD
DDDオリジナル
2025-01-19 09:27:12252ブラウズ

Why Does Modifying a C# Auto-Implemented Property Result in a

C# 自動実装プロパティの「戻り値を変更できません」エラーに対処する

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。