替换引用列表引用的对象是否可行

时间:2014-07-24 17:52:17

标签: c# reference

这是我想用C#做的事情:

MyClass A, B, C;

void test(List<object> lst_ref)
{
   // assign each reference in lst_ref a new object
}

我想做的是致电

test(new list<object> {A, B, C})

更改A,B,C引用的对象的属性,但更改名称A,B,C指向的对象

我理解为什么上面的伪代码不起作用

但我想确认我想做什么在C#

中是不可行的

(抱歉,我无法想出一个更好的头衔)

1 个答案:

答案 0 :(得分:2)

如果要定义一个可以为三个不同的变量中的每一个赋值的方法,那么是的,有一些方法可以做到这一点,例如通过使用委托:

public static void Set3Variables<T>(params Action<T>[] actions)
    where T : new()
{
    foreach (var action in actions)
        action(new T());
}

这将允许你写:

Set3Variables<MyClass>(
    value => A = value,
    value => B = value,
    value => C = value);

现在,在调用此方法之后,您实际上已经设置了这三个变量,不仅仅是改变了该变量的值,还是创建了一些新值而不影响这三个变量。