修改作为参数传递的引用类型

时间:2013-11-05 17:05:55

标签: c# inheritance reference-type

关于在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);

我知道Zedy未更改xx已被修改?将3传递给y并将其视为Func后,Bar仍然是{{1}}吗?

2 个答案:

答案 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 == 2y.x == 2在此末尾,因为这些是Func中分配的值。一个是通过属性设置而另一个是通过方法设置的事实并不重要。