需要一些关于引用和变量副本的解释(C#)

时间:2016-05-18 08:21:05

标签: c# reference

如何彻底重构:

  private MyType a;
  private MYType b;
  private MyType c;
  ...
  public void MyMT(MyEnum myEnum)
     {
        switch(myEnum)
        {
        case myEnum.a:
        a=Method(a);
        break;
        case myEnum.b:
        b=Method(b);
        break;
        case myEnum.c:
        c=Method(c);
        break;
        }

    }

我想到了这样的事情:

  public void MyMT(MyEnum myEnum)
     {
        MyType _myType;

        switch(myEnum)
        {
        case myEnum.a:
        _myType =a;
        break;
        case myEnum.b:
        _myType =b;
        break;
        case myEnum.c:
        _myType =c;
        break;
        }
        _myType = Method(_myType);
    }

_myType是一个对象,我认为

_myType=a; 

会复制" a"将地址导入myType,这样当我稍后修改_myType值时,它也会修改" a"值。 点击此行时_myType获取正确的值:

 _myType = Method(_myType); 

但是a(或b或c)没有像我想象的那样更新。

Aren的引用应该以这种方式工作吗?

编辑: 方法实际上创建了一个SQL连接,调用:

Method(MyType _myType)
{
 new MySqlConnection(_myType.ToString());
}

1 个答案:

答案 0 :(得分:2)

当您指定_myType=a时,通过a引用_myType。然后,当您执行_myType = Method(_myType)时,只需在_myType中存储新参考。如果你想改变对象的属性,你的Method应该直接修改它。