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

為什麼修改 C# 自動實現的屬性會導致「無法修改回傳值」錯誤?

DDD
發布: 2025-01-19 09:27:12
原創
291 人瀏覽過

Why Does Modifying a C# Auto-Implemented Property Result in a

解決 C# 自動實作屬性中的「無法修改回傳值」錯誤

C# 自動實作的屬性提供了一種簡化的資料封裝方法。 但是,嘗試直接修改這些屬性可能會導致令人沮喪的「無法修改回傳值」編譯器錯誤。

出現此錯誤是因為自動實作的屬性在存取時傳回基礎資料的副本。 因此,對此副本的任何變更都不會保留;它們不會影響原始儲存值。

觀察以下範例:

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

Origin.X = 10; // Results in CS1612 error</code>
登入後複製

發生錯誤是因為Point是值型別(結構體)。 存取 Origin 提供副本,而不是直接引用。修改副本的 X 屬性會使原始 Origin 保持不變。

解決方案涉及使用引用類型(類別)或使用中間變數。 這是正確的方法:

<code class="language-csharp">Origin = new Point(10, Origin.Y);</code>
登入後複製

此程式碼使用更新的 Point 座標建立一個新的 X 對象,並將其指派回 Origin 屬性。 由於 Origin 是引用類型,因此此修改會正確反映在後備儲存中。

以上是為什麼修改 C# 自動實現的屬性會導致「無法修改回傳值」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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