我有一个定义以下方法的类 -
void DoAction1(out object result1)
{
// Do some work and set result1
}
void DoAction2(out object result2)
{
// Do some work and set result2
}
void ExecuteAllActions()
{
//Some more execution work happens here
// which may cause modifications to result1 and result2
}
我是否可以通过某种方式将ref存储到两个参数中并在ExecuteAllActions()函数中更新它们?
答案 0 :(得分:0)
由于您提供的信息量有限,我只能说你做错了。作为一般规则,您永远不会编写具有out
参数和void
返回类型的方法,因为您只需返回您将分配给out
参数的任何对象。这种方法更容易,更简单:
object DoAction1()
{
// Do some stuff and return a result object
}
object DoAction2()
{
// Do some stuff and return a result object
}
void ExecuteAllActions()
{
var actionResult1 = DoAction1();
var actionResult2 = DoAction2();
}
答案 1 :(得分:0)
有意 - 在.NET类型系统中没有办法将ref存储到变量中。这样可以避免存储对生命周期结束的变量的引用的问题。
但是,我注意到一个单元素数组是一个可以作为引用类型传递的对象,其唯一元素是一个可以作为ref或out传递的变量。显然你可以存储一个单元素数组,随意传递它等等。
那就是说,如果你需要采取这样的技巧,那么设计中可能存在一些错误。尝试制作带有值和返回值的API,而不是接受变量并改变它们。