Detailed explanation of "Cannot modify return value" error in C#
Auto-implemented properties in C# provide a convenient way to define properties, but sometimes when trying to modify the property value, it may result in a "Cannot modify return value" error.
Please see the following code:
<code class="language-csharp">public Point Origin { get; set; } Origin.X = 10; // 产生 CS1612 错误</code>
This code attempts to set the X coordinate of the Origin property. However, it will report an error saying that the return value of the property cannot be modified because it is not a variable.
Root cause: value types and reference types
This error occurs because Point is a value type (structure). Value types are copied by value, which means that when you assign a value type to a variable, a new copy is created. In this case, when you access the Origin property, you are actually accessing a copy of the Point value, not the original value stored in the class.
Solution
To resolve this issue, you have two options:
<code class="language-csharp">Point temp = Origin; temp.X = 10; Origin = temp;</code>
By storing the property value in the temp variable, you create a modifiable copy of the value type. You can then set properties to the modified copy.
The above is the detailed content of Why Does C# Throw a 'Cannot Modify Return Value' Error When Modifying Auto-Implemented Properties?. For more information, please follow other related articles on the PHP Chinese website!