エラー:「戻り値を変更できません」c# 質問する

エラー:「戻り値を変更できません」c# 質問する

自動実装プロパティを使用しています。以下を修正する最も早い方法は、独自のバッキング変数を宣言することだと思います。

public Point Origin { get; set; }

Origin.X = 10; // fails with CS1612

エラー メッセージ: 'expression' の戻り値は変数ではないため変更できません

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

このエラーを解決するには、式の結果を中間値に格納するか、中間式に参照型を使用します。

ベストアンサー1

Pointこれは、 が値型 ( ) であるためですstruct

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

値だけを変更したい場合はX、次のようにする必要があります。

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

おすすめ記事