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) 

andaを定義せずにアクセスするにはどうすればよいですか?bc

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

この関数を呼び出すと、2 つの double が作成されますが、呼び出し元のコンテキストが乱雑になることはありません。

を呼び出したい場合、どこかに 2 つの double の作成を回避することは不可能ですFct。パラメーターの全体的な考え方はout、関数には独自の値がなく、外部値を参照しているため、外部値がどこかに存在する必要があるということです。

于 2012-11-06T18:36:39.867 に答える
0

これは簡単です。値が提供されることを保証したくない場合はFct、これらすべてのパラメーターを使用して関数を定義しません。out

于 2012-11-06T18:41:02.767 に答える