1

我有这个 C# 函数:

Fct( double [] x, out double a, out double b, out double c) 
{
    // ***
}

我按以下步骤获取 的值a

double a , b, c;
Fct( myArray, out a, out b, out c) 

如何a无需定义band就可以访问c

4

4 回答 4

3

我相信你可以超载“Fct”。添加这个:

Fct( double [] x, out double a) 
{
    double b,c;
    Fct(x, out a, out b, out c);
}
于 2012-11-06T18:35:27.250 回答
0

不幸的是,在 C# 中没有直接的技术来解决这个问题。我相信您需要重载该功能。

此外,根据 C# 规范(C# 4.0 规范,第 21.1 节)-“ref 或 out 参数不能有默认参数。”

于 2012-11-06T18:59:34.330 回答
0

如果您只是想避免混乱,您可以创建一个辅助函数来“隐藏”其他变量:

Fct(double[] x, out double a)
{
    double b, c;
    Fct(x, out a, out b, out c);
}

调用此函数时仍会创建两个双精度数,但它避免了混淆调用者的上下文。

如果您想调用Fct. 参数的整个想法out是函数没有自己的值,它引用外部值,因此外部值必须存在于某个地方。

于 2012-11-06T18:36:39.867 回答
0

这很容易:如果您不想保证将为它们提供值,则无需Fct使用所有这些参数定义您的函数。out

于 2012-11-06T18:41:02.767 回答