我在更改类的字段时是设置引用的值,还是仅设置值的值?

时间:2015-05-07 08:57:55

标签: c#

我正在编写一段涉及大量数据和操作重复的代码,对我来说,尽可能减少这一点非常重要。对我来说,MSDN support doc意味着当我将类Foo的字段设置为某个类Bar的实例时,我将此设置为此实例的引用,而不是价值,这正是我想要做的。鉴于此功能对我来说有多重要(它会影响我的程序的运行时间),有人可以更明智地为我确认。

代码示例:

public class Foo
{
    public Bar ChildBar {get;set;}

    public void SetChildBarValue (int value)
    {
        this.ChildBar.Value = value;
    }
}

public class Bar
{
    public int Value {get;set;}
}

var foo1 = new Foo();
var foo2 = new Foo();
var bar = new Bar();

foo1.ChildBar = bar;
foo2.ChildBar = bar;

foo1.SetChildBarValue(1);
Console.WriteLine(foo2.ChildBar.Value);

我的问题是,WriteLine会返回1还是null

提前致谢。

1 个答案:

答案 0 :(得分:3)

  

我的问题是,WriteLine会返回1还是null?

由于Bar被声明为class,因此是引用类型,并且您要将ChildBar设置为指向同一个bar的实例,导致bar的引用分配,WriteLine将打印1。

作为旁注 - 实际运行此代码会告诉你同样的事情。