C# 中「無法修改回傳值」錯誤詳解
C# 中的自動實作屬性提供了一種便捷的屬性定義方式,但有時在嘗試修改屬性值時,可能會導致「無法修改回傳值」錯誤。
請看以下程式碼:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 产生 CS1612 错误</code>
這段程式碼試圖設定 Origin 屬性的 X 座標。但是,它會報錯,提示屬性的回傳值無法修改,因為它不是變數。
根本原因:值型別與引用型別
該錯誤的出現是因為 Point 是值型別(結構體)。值類型是按值複製的,這表示當您將值類型賦值給變數時,會建立新的副本。在本例中,當您存取 Origin 屬性時,實際上存取的是 Point 值的副本,而不是類別中儲存的原始值。
解決方法
要解決此問題,您可以選擇以下兩種方法:
<code class="language-csharp">Point temp = Origin; temp.X = 10; Origin = temp;</code>
透過將屬性值儲存在 temp 變數中,您建立了值類型的可修改副本。然後,您可以將屬性設定為修改後的副本。
以上是為什麼 C# 在修改自動實現的屬性時會拋出「無法修改回傳值」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!