关于在C#中传递引用类型,我一直reading up,我不确定具体情况。
示例代码:
public class Foo
{
int x;
public SetX(int value)
{
x = value;
}
public int Zed
{
get;
set;
}
public class Bar : Foo
{
//suffice it to say, this is SOME inherited class with SOME unique elements
}
...
void Func (Foo item)
{
Bar child = item as Bar;
child.Zed = 2;
child.SetX(2); //situation in question.
}
...
Bar y = new Bar();
y.Zed = 1;
y.SetX(3);
Func(y);
我知道Zed
中y
未更改x
但x
已被修改?将3
传递给y
并将其视为Func
后,Bar
仍然是{{1}}吗?
答案 0 :(得分:1)
我知道Zed在y中没有改变但是被修改了吗?或者在将y传递给Func并将其作为条形图处理后仍为3?
X将被修改。由于2
Func
child.SetX(2); //situation in question.
答案 1 :(得分:1)
整个过程中只有一个可变的Bar
实例。
Foo y = new Bar();
y.Zed = 1;
y.SetX(3);
Func(y);
y.Zed == 2
和y.x == 2
在此末尾,因为这些是Func
中分配的值。一个是通过属性设置而另一个是通过方法设置的事实并不重要。