【发布时间】:2015-07-13 17:16:14
【问题描述】:
情况:
我有一个List<DataGridView> temp。我需要通过引用将特定索引传递给函数,因为我遍历它们并且需要更改受影响的索引。以下是我尝试/使用的方法
方法一
functionA(ref temp[0]);
A property, indexeur or access to a dynamic member cannot be passed as ref or out (free traduction)
不过我能做到:
方法二
DataGridView bobu = temp[0];
functionA(ref bobu );
还有这项工作。有没有办法使用我的方法 1 而不是使用像 方法 2 中的技巧?
【问题讨论】:
-
我不认为 1 和 2 是等价的。在方法 1 中,您尝试引用 temp[0],这将允许您在列表的“插槽”0 中重新分配“DataGridView”。但是,方法 2 允许您在
bobu上执行相同操作,如果您在functionA中重新分配它,它对temp[0]没有影响 -
@FrankJ 但是更改
bobu的属性会更改temp[0],因为DataGridView是一个类,而不是一个结构。我不明白为什么ref甚至在这里,因为DataGridView已经是一个引用类型。 -
到底发生了什么!但是有没有办法不需要卫生棉条变量?对变量名感到抱歉,下次会使用更好的!
-
您可以更改
DataGridView的内容,如果这就是您想要的,您根本不需要引用,因为它是一个引用类型。只有当您想在functionA中将DataGridView的新实例new分配给传入的变量并希望查看函数外部的更改时,才需要它。如果你了解 C++,这个概念类似于双指针。 -
看this from MSDN如何使用
ref。
标签: c#