这是我想用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#
中是不可行的(抱歉,我无法想出一个更好的头衔)
答案 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);
现在,在调用此方法之后,您实际上已经设置了这三个变量,不仅仅是改变了该变量的值,还是创建了一些新值而不影响这三个变量。