我有这个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
和b
的情况下访问c
?
答案 0 :(得分:3)
我相信你可以超载“Fct”。加上这个:
Fct( double [] x, out double a)
{
double b,c;
Fct(x, out a, out b, out c);
}
答案 1 :(得分:0)
如果您只是想避免混乱,可以使用辅助函数“隐藏”其他变量:
Fct(double[] x, out double a)
{
double b, c;
Fct(x, out a, out b, out c);
}
调用此函数时仍会创建两个双精度数,但它可以避免使调用者的上下文混乱。
如果要调用Fct
,则无法避免在某处创建两个 。 out
参数的整个概念是函数没有自己的值,它引用外部值,因此外部值必须存在于某处。
答案 2 :(得分:0)
这很简单:如果您不想保证为它们提供值,则不要使用所有Fct
参数定义out
函数。
答案 3 :(得分:0)
不幸的是,没有直接的技术来解决C#中的问题。我相信你需要重载这个功能。
另外,根据C#规范(C# 4.0 Specification,第21.1节) - " ref或out参数不能有default-argument。"