1. ホーム
  2. c#

[解決済み】エラー。「戻り値を変更できません」 C#

2022-01-17 23:56:56

質問

自動実装されたプロパティを使っています。 バッキング変数を自分で宣言するのが一番手っ取り早いのでは?

public Point Origin { get; set; }

Origin.X = 10; // fails with CS1612

エラーメッセージです。expression' の戻り値は変更できません。 それは変数ではありません。

の結果である値型を変更しようとしました。 中間式。値は永続化されないので、その値は は変更されません。

このエラーを解決するには、式の結果を 中間値に参照型を使用する。 の式で表されます。

どのように解決するのですか?

これは Point は値型( struct ).

このため、アクセスすると Origin プロパティにアクセスしていることになります。 コピー は、参照型のように値そのものではなく、クラスが保持する値の( class ) を設定すると X プロパティを設定した後、それを破棄し、元の値を変更しないようにしているのです。これはおそらく、あなたが意図したものではないから、コンパイラーが警告を発しているのです。

もし X の値は、次のようにする必要があります。

Origin = new Point(10, Origin.Y);