2

簡単な例で質問を説明するために、次のように言いましょう。

私は2つの数値の平均をとる方法を持っています:

private double TakeAverage(double n1,double n2) 
{
    average = (number1 + number2) / 2.0000;
    return average;
}

そして、私はそれを次のように呼びます:

textBox3.Text = (TakeAverage(number1, number2)).ToString();

Q1:

この関数を複数回呼び出さずに実行できるようにする方法:

TakeAverage(number1, number2, number3, number4, number5)  // as wanted number of times...

Q2:取得した値の数によって戻り値を変更するこの関数を作成するにはどうすればよいですか?

例えば

Substring(1) //if it takes just one value, it returns all the chars after first char but
Substring(1,2)//if it takes two values, it returns 2 characters after first char
4

3 に答える 3

3

これをチェックしてください:

public double TakeAverage(params double[] numbers)
{
  double result = 0.0;

  if (numbers != null && numbers.Length > 0)
    result = numbers.Average();

  return result;
}

paramsクライアントは何も送信できないため、アイテムが存在するかどうかをテストする必要がnumbersあります。

使用法:

double average = TakeAverage(1, 2, 3, 4.4);     //2.6
double anotherAverage = TakeAverage();          //0
double yetAnotherAverage = TakeAverage(null);   //0

アップデート

あなたのコメントに基づいて、オーバーロードと呼ばれるものを探していることを理解しています。特定のメソッドがその引数に基づいて異なる動作をすることを望んでいます。

例を挙げます。必要に応じて変更する必要があります。

TakeAverage元の方法に加えて、平均を計算し、それを特定の数に掛ける別の方法が必要であるとしましょう。次のようになります。

public double TakeAverage(int factor, params double[] numbers)
{
  double result = 0.0;

  if (numbers != null && numbers.Length > 0)
    result = numbers.Average() * factor;

  return result;
}

使用法:

double average = TakeAverage(1.0, 2, 3, 4.4);     //2.6
double notAnAverage = TakeAverage(1, 2, 3, 4.4);  //3.1333...

double最初の数値が( ) であることを明示的に言わなければならなかったことに注意してください1.0

于 2013-06-26T14:06:46.073 に答える
1

部分文字列関数の質問への回答。

たとえば、sub string(5) のように 1 つの引数を指定すると、文字列の 5 番目の文字以降のすべての文字が返されます。文字列「elephant」がある場合、「ant」が返されます。

関数に 2 番目の引数を追加すると、上記のように、最初に指定された引数から開始され、停止する前に x 文字分続きます。上記の例の文字列「elephant」を使用して sub string(5,1) を実行すると、「a」が返されます。

(これを解決する良い方法は、両方の数字を追加することです。これが文字列の最後の文字になります!)

私が求めているのは、指定された文字列の 5 番目の文字から始まる新しい文字列を作成し、新しい文字列の長さを 1 文字にすることです。

これは、文字列クラスが部分文字列メソッドをオーバーロードしたためです。

ここを参照してください: http://msdn.microsoft.com/en-us/library/system.string.substring(v=vs.71).aspx

于 2013-06-26T14:30:16.923 に答える
1

params指定されていない量の引数を取ると言うことができる - キーワードがあります。

MSDNから

params キーワードを使用すると、可変数の引数を取るメソッド パラメーターを指定できます。

パラメーター宣言で指定された型の引数のコンマ区切りリスト、または指定された型の引数の配列を送信できます。引数を送信しないこともできます。

メソッド宣言の params キーワードの後に​​パラメータを追加することはできません。また、メソッド宣言で使用できる params キーワードは 1 つだけです。

例:

private double TakeAverage(params double[] numbers) 
{
     double average = 0.0;
     if(numbers != null && numbers.Length > 0){
     foreach(double d in numbers)
          average += d;
     average /= numbers.Length;
     }
     return average;
}
于 2013-06-26T14:00:46.573 に答える