【发布时间】:2014-04-23 05:00:50
【问题描述】:
我最初是从这个地址获取的:http://csharpindepth.com/articles/chapter8/propertiesmatter.aspx,但由于某种原因,我无法理解它。有人可以解释一下为什么 Console.WriteLine(holder.Property.Value);输出 0。
void Main()
{
MutableStructHolder holder = new MutableStructHolder();
holder.Field.SetValue(10);
holder.Property.SetValue(10);
Console.WriteLine(holder.Field.Value); // Outputs 10
Console.WriteLine(holder.Property.Value); // Outputs 0
}
struct MutableStruct
{
public int Value { get; set; }
public void SetValue(int newValue)
{
Value = newValue;
}
}
class MutableStructHolder
{
public MutableStruct Field;
public MutableStruct Property { get; set; }
}
【问题讨论】:
-
{ 得到;放; } 是问题所在。如果我使用 public MutableStruct Property ;这个输出 10 和 10
-
因为属性是用隐藏的 get/set 方法实现的,而结构是通过 getter 的值返回的。因此,您对属性所做的任何修改都不会在属性包装的字段上进行。
标签: c#