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

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

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

Why Does C# Throw a

C# の「戻り値を変更できません」エラーの詳細な説明

C# の自動実装プロパティは、プロパティを定義する便利な方法を提供しますが、プロパティ値を変更しようとすると、「戻り値を変更できません」エラーが発生する場合があります。

次のコードを参照してください:

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

Origin.X = 10; // 产生 CS1612 错误</code>
ログイン後にコピー

このコードは、Origin プロパティの X 座標を設定しようとします。ただし、プロパティの戻り値は変数ではないため変更できないというエラーが報告されます。

根本原因: 値の型と参照型

このエラーは、Point が値型 (構造体) であるために発生します。値の型は値ごとにコピーされます。つまり、値の型を変数に割り当てると、新しいコピーが作成されます。この場合、Origin プロパティにアクセスすると、実際にはクラスに格納されている元の値ではなく、Point 値のコピーにアクセスすることになります。

解決策

この問題を解決するには、2 つのオプションがあります:

  1. 参照型を使用する: 値型ではなく参照型 (クラス) を指すように変更します。参照型は参照によってコピーされます。つまり、参照型を変数に割り当てると、元のオブジェクトへのポインターがコピーされます。これにより、元のオブジェクトをそのプロパティを通じて直接変更できるようになります。
  2. 一時変数に保存: Point を値型として保持したい場合は、プロパティ アクセスの結果を変更する前に一時変数に保存する必要があります。例:
<code class="language-csharp">Point temp = Origin;
temp.X = 10;
Origin = temp;</code>
ログイン後にコピー

プロパティ値を一時変数に保存すると、値の型の変更可能なコピーが作成されます。その後、変更したコピーにプロパティを設定できます。

以上が自動実装されたプロパティを変更すると、C# が「戻り値を変更できません」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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