web-dev-qa-db-ja.com

無限のパラメータを持つメソッドを作成していますか?

C#ではこれを行うことができます:

_foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...);
_

このメソッドFormat()は、文字列のフォーマット方法の最初のパラメーターである無限パラメーターを受け入れ、残りは文字列に配置される値です。

今日、文字列のセットを取得してテストしなければならない状況になり、この言語機能を思い出しましたが、手がかりがありませんでした。数回失敗したWeb検索の結果、配列を取得する方が賢明であることに気づきました。

Q:無限パラメーターを受け入れる関数を作成するにはどうすればよいですか?そして、それをどのように使用しますか?

55
Marcelo

params キーワードを使用します。

次に例を示します。

    public int SumThemAll(params int[] numbers)
    {
        return numbers.Sum();
    }

    public void SumThemAllAndPrintInString(string s, params int[] numbers)
    {
        Console.WriteLine(string.Format(s, SumThemAll(numbers)));
    }

    public void MyFunction()
    {
        int result = SumThemAll(2, 3, 4, 42);
        SumThemAllAndPrintInString("The result is: {0}", 1, 2, 3);
    }

コードはさまざまなことを示しています。まず、paramsキーワードを使用した引数は常に最後でなければなりません(関数ごとに1つしか存在できません)。さらに、params引数を取る関数を2つの方法で呼び出すことができます。最初の方法は、MyFunctionの最初の行に示されています。ここで、各数値は単一の引数として追加されます。ただし、SumThemAllAndPrintInStringSumThemAllと呼ばれるint[]を使用してnumbersを呼び出すように、配列を使用して呼び出すこともできます。

91

Paramsキーワードを使用します。使用法:

public void DoSomething(int someValue, params string[] values)
{
    foreach (string value in values)
        Console.WriteLine(value);
}

Paramsキーワードを使用するパラメーターは常に最後に来ます。

19
David Morton

いくつかのメモ。

パラメータは、string []やobject []のような配列型でマークする必要があります。

Paramsでマークされたパラメーターは、メソッドの最後の引数でなければなりません。 Foo(string input1、object [] items)など。

6
bakasan

params キーワードを使用します。例えば

static void Main(params string[] args)
{
    foreach (string arg in args)
    {
        Console.WriteLine(arg);
    }
}
3
Russ Cam

params キーワードを使用してこれを実現できます。

小さな例:

public void AddItems(params string[] items)
{
     foreach (string item in items)
     { 
         // Do Your Magic
     }
}
3
Faizan S.
    public static void TestStrings(params string[] stringsList)
    {
        foreach (string s in stringsList){ } 
            // your logic here
    }
3
Asad Butt
 public string Format(params string[] value)
 {
            // implementation
 }

Paramsキーワードが使用されている

1
Dan
function void MyFunction(string format, params object[] parameters) {

}

Object []の代わりに、好きなタイプを使用できます。 params引数は常に行の最後でなければなりません。

1
AxelEckenberger