1

私は自分のC#スキルを磨き、C#の本を読んでいます。params配列の章でキーワードに出くわしました。params通常の配列をメソッドに渡すだけでなく、実際にキーワードを使用するのはなぜですか。paramsキーワードの有無にかかわらず配列を渡す両方のアプローチをテストしました。どちらも問題なく動作しました。paramsキーワードを使用する実際の理由はありますか?

これが私のコードです:

using System;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] classname = new string[5] { "cs150", "cs250", "cs270", "cs300", "cs350" };
            Prints(classname);

            Console.Read();
        }

        public static void Prints(params string[] t)
        {
            foreach (var s in t)
            {
                Console.WriteLine(s);
            }
        }
    }
}

パラメータなしのコードは次のとおりです。

using System;

namespace ConsoleApplication9
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] classname = new string[5] { "cs150", "cs250", "cs270", "cs300", "cs350" };
            Prints(classname);

            Console.Read();
        }

        public static void Prints(string[] t)
        {
            foreach (var s in t)
            {
                Console.WriteLine(s);
            }
        }
    }
}
4

5 に答える 5

11

これらの呼び出しのうち、Console.WriteLineより明確だと思うものはどれですか。

Console.WriteLine("Hello {0}, you are {1}", person.Name, person.Age);

また

Console.WriteLine("Hello {0}, you are {1}",
                  new object[] { person.Name, person.Age });

new[](上記の場合、またはが型でない限り、暗黙的に型指定された配列()を使用することもできません...両方が型であるperson.Name場合は問題ありませんが、文字列配列が作成されます...)person.Ageobjectstring

私は最初のものが好きです。読みやすいです。これですべてparamsです。呼び出し元がより簡潔な構文を使用できるようにするだけです。コードの場合と同様に、通常の方法で配列参照を渡すこともできますが、次のように記述することもできます。

Prints("cs150", "cs250", "cs270", "cs300", "cs350");

...これも、別の変数を宣言するよりも読みやすいです。

于 2012-10-20T19:43:28.900 に答える
4

paramsを使用すると、次のようにメソッドを呼び出すことができます。

Prints("1", "2", "3", "4", "5");

パラメータがないと、できません。

さらに、どちらの場合も、パラメーターとして配列を使用してメソッドを呼び出すことができます。

Prints(new string[] { "1", "2", "3", "4", "5" });

つまり、paramsを使用すると、メソッドを呼び出すときにショートカットを使用できます。

于 2012-10-20T19:44:13.630 に答える
2

paramsを使用すると、配列を作成せずにメソッドを呼び出すことができます。

Prints("cs150", "cs250", "cs270")
于 2012-10-20T19:43:52.783 に答える
0

paramsキーワードの目的は

作成したライブラリまたはメソッドを使用するコーダーのコーディングエクスペリエンスを簡素化します。

于 2012-10-21T14:18:34.533 に答える
0

「params」キーワードなしで引数を渡す場合、uはarray(配列サイズ)で指定された要素のみを渡すことができますが、「params」を使用すると、配列(配列サイズ)で引数の数を指定する必要はなく、任意の数を渡すことができます。必要に応じて関数を呼び出すことによる引数。

于 2012-10-29T11:08:44.540 に答える