如何传递对函数的引用

How to pass reference to the function

我将一些 VB 代码转换为 C#。现在我陷入了困境,我必须使用 ref 关键字传递参数。函数是

CurrentZone.Radius = ModSoftUniversal.perirad(ref  (Z2 - Z1), ref ( Xval - Xinc - CurrentZone.Centerx), ref ( dXval - CurrentZone.Centerx), ref ErrorFlag);

函数中的参数正在做一些计算并将值传递给函数,必须使用 ref。 Visual Studio 显示以下 。我需要帮助传递参数

不能通过引用传递表达式。像这样添加临时变量:

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);

像这样编写代码

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);

原因是如果某个东西没有分配给它可以引用自身的变量,你就不能通过引用创建它

您不能将 "expression" 作为 refout 参数传递。

在 C# 中 ref 参数意味着您的参数 "reference" 将在函数内部更改,这就是为什么您不能传递 "expression".

您可以在 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);