首页 >后端开发 >C++ >为什么修改 C# 自动实现的属性会导致'无法修改返回值”错误?

为什么修改 C# 自动实现的属性会导致'无法修改返回值”错误?

DDD
DDD原创
2025-01-19 09:27:12292浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn