首頁 > 後端開發 > C++ > 為什麼 C# 中自動實作的屬性會出現「無法修改回傳值」?

為什麼 C# 中自動實作的屬性會出現「無法修改回傳值」?

Susan Sarandon
發布: 2025-01-19 09:42:09
原創
911 人瀏覽過

Why Does

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板