【发布时间】:2013-10-19 07:31:34
【问题描述】:
我在可变类型的类属性上有一个私有设置器,我使用 myMutableVariable 通过类构造函数设置它。
但是,当我在 myMutableVariableafter Class.Property = myMutableVariable 上更改某些内容时,myMutableVariableand Class.Property 之间存在差异。
例如,更改是 - 将 myVariable 设置为 null。
属性保持private - 不会改变。
即使对于同一私有属性中的列表及其成员也是如此。
它是如何工作的?
public class Class1
{
public Class1(string name)
{
this._name = name;
}
private string _name = "";
public string Name { get { return _name; } set { _name = value; } }
}
public class Class2
{
public Class2(Class1 c1)
{
this._c1 = c1;
}
private Class1 _c1;
public Class1 C1 { get { return _c1; } }
}
测试:
static void Main(string[] args)
{
Class1 myMutableVariable = new Class1("c1name");
Class2 c2 = new Class2(myMutableVariable);
myMutableVariable = null;
Console.WriteLine(c2.C1.Name);
//c2.C1 remains 'c1name'
}
【问题讨论】:
-
显示相关代码。
-
"when I change something"是什么意思?请发布您的代码 - 不要让我们想象它。 -
抱歉,添加了信息,确实没有太多代码可显示。我认为这是一种常见的情况。
-
@JJ_Jason:可能没有很多代码,但有什么是至关重要的。只显示代码比描述代码要容易得多。
-
"c2.C1 仍然是 'c1name'" 这不是真的,它会按预期变为
test。演示:ideone.com/arahIC
标签: c#