私はこの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
を定義せずにアクセスするにはどうすればよいですか?b
c
私はこの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
を定義せずにアクセスするにはどうすればよいですか?b
c
「Fct」をオーバーロードできると思います。これを追加:
Fct( double [] x, out double a)
{
double b,c;
Fct(x, out a, out b, out c);
}
残念ながら、C# でこの問題を解決する簡単な方法はありません。関数をオーバーロードする必要があると思います。
また、C# 仕様 ( C# 4.0 仕様、セクション 21.1) によると、「ref または out パラメーターにはデフォルト引数を指定できません。」
混乱を避けたい場合は、ヘルパー関数を作成して他の変数を「隠す」ことができます。
Fct(double[] x, out double a)
{
double b, c;
Fct(x, out a, out b, out c);
}
この関数を呼び出すと、2 つの double が作成されますが、呼び出し元のコンテキストが乱雑になることはありません。
を呼び出したい場合、どこかに 2 つの double の作成を回避することは不可能ですFct
。パラメーターの全体的な考え方はout
、関数には独自の値がなく、外部値を参照しているため、外部値がどこかに存在する必要があるということです。
これは簡単です。値が提供されることを保証したくない場合はFct
、これらすべてのパラメーターを使用して関数を定義しません。out