102

私は Java に取り組んできましたが、.Net テクノロジは初めてです

可変入力パラメータを受け入れるC#で関数を宣言することは可能ですか

次の Java 構文に似た C# 構文はありますか?

void f1(String... a)
4

2 に答える 2

162

はい、C# には varargs パラメーターに相当するものがあります。それらはパラメーター配列paramsと呼ばれ、修飾子で導入されます。

public void Foo(int x, params string[] values)

次に、次のように呼び出します。

Foo(10, "hello", "there");

Java と同様に、このように変化するのは最後のパラメーターだけです。(Java と同様に) のパラメーターはparams object[] objects混乱を招きやすいことに注意してください。型の単一の引数がobject[]再びラップされることを意図しているかどうかを覚えておく必要があるためです。同様に、null 許容型の場合、単一の引数がnull配列参照として扱われるか、単一の配列要素として扱われるかを覚えておく必要があります。(コンパイラは必要な場合にのみ配列を作成すると思いますが、私はそれを覚える必要がないようにコードを書く傾向があります。)

于 2013-08-12T19:14:45.090 に答える
38

paramsを見てください(C# リファレンス)

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

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

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

例に示すように、メソッドは次のように宣言されます

public static void UseParams(params int[] list)
{
    for (int i = 0; i < list.Length; i++)
    {
        Console.Write(list[i] + " ");
    }
    Console.WriteLine();
}

として使用されます

UseParams(1, 2, 3, 4);
于 2013-08-12T19:15:55.033 に答える