C# 中的「無法修改回傳值」錯誤
使用自動實作屬性時,可能會出現「無法修改回傳值」錯誤,例如:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 出现 CS1612 错误</code>
錯誤原因分析
出現此錯誤是因為 Point
是值型別(結構體)。存取 Origin
屬性時,傳回的是類別中保存的值的副本,而不是值本身。修改副本的屬性不會影響原始值。
解決方法
要解決此問題,需要直接修改底層值。對於值類型,可以透過將副本儲存在臨時變數中並在該變數上設定屬性來實現:
<code class="language-csharp">Point originCopy = Origin; originCopy.X = 10; Origin = originCopy;</code>
或者,您可以建立自己的備份欄位來儲存值類型並直接修改該欄位:
<code class="language-csharp">private Point _origin; public Point Origin { get { return _origin; } set { _origin = value; } }</code>
這樣就可以直接修改 Origin
屬性了:
<code class="language-csharp">Origin.X = 10; // 此行现在可以正常工作,不会报错</code>
以上是為什麼 C# 中自動實作的屬性會出現「無法修改回傳值」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!