我将一些VB代码转换为C#。现在我陷入困境,我必须使用 ref 关键字传递参数。功能是
CurrentZone.Radius = ModSoftUniversal.perirad(ref (Z2 - Z1), ref ( Xval - Xinc - CurrentZone.Centerx), ref ( dXval - CurrentZone.Centerx), ref ErrorFlag);
函数中的参数正在进行一些计算并将值传递给函数,必须使用 ref 。 Visual Studio显示以下。我需要帮助传递参数
答案 0 :(得分:6)
您无法通过引用传递表达式。像这样添加临时变量:
var z = Z2 - Z1;
var x1 = Xval - Xinc - CurrentZone.Centerx;
var x2 = dXval - CurrentZone.Centerx;
CurrentZone.Radius = ModSoftUniversal.perirad(ref z, ref x1, ref x2, ref ErrorFlag);
答案 1 :(得分:2)
制作像这样的代码
var z1z2Result = (Z2 - Z1);
var xValxIncres = (Xval - Xinc - CurrentZone.Centerx);
var dxValResult = (dXval - CurrentZone.Centerx);
ModSoftUniversal.perirad(ref z1z2Result, ref xValxIncres, ref dxValResult, ref ErrorFlag);
原因是你不能通过引用做出某些东西,如果它没有分配给它可以引用自己的变量
答案 2 :(得分:2)
您无法将“表达式”作为ref
或out
参数传递。
在C#ref
参数中意味着您的参数“reference”将在函数内部更改,这就是您无法传递“表达式”的原因。
您可以在https://msdn.microsoft.com/en-AU/library/14akc2c7.aspx
了解更多相关信息所以,你的代码看起来应该是这样的:
int Z3 = (Z2 - Z1);
int X1 = ( Xval - Xinc - CurrentZone.Centerx);
int X2 = ( dXval - CurrentZone.Centerx);
bool ErrorFlag = false;
CurrentZone.Radius = ModSoftUniversal.perirad(ref Z3, ref X1, ref X2, ref ErrorFlag);