我有这个代码
public MyResponse innerFunc(ref MyElem[]);
public IResponse myFunc(ref IElem[] myElem)
{
return this.innerFunc(ref (A_CAST_OR_SOMETHING) myElem);
}
哪里
MyResponse:IResponse
MyElem:IElem
A_CAST_OR_SOMETHING应该是MyElem []
当我这样做时
public IResponse myFunc(ref IElem[] myElem)
{
return this.innerFunc(ref ((MyElem[]) myElem));
}
编译器高亮括号(仅括弧)并说:
ref或out参数必须是可分配的变量
我该怎么办?
最佳答案
ref
和out
的工作方式,您必须直接将作为该参数传递的内容分配给它。简而言之,它必须能够出现在=
符号的左侧。由于您无法执行此操作:
((MyElem[])myElem) = foo;
那么您也不能这样做:
foo((MyElem[])myElem);
要解决此问题,您需要引入一个临时变量:
public IResponse myFunc(ref IElem[] myElem)
{
var temp = (MyElem[])myElem;
var response = this.innerFunc(ref temp);
myElem = (IElem[])temp;
return response;
}