C#は可変数の引数をサポートしていますか?
はいの場合、C#はどのように変数の引数をサポートしませんか?
例は何ですか?
変数引数はどのように役立ちますか?
編集1:その制限は何ですか?
編集2:質問はオプションのパラメーターではなく、可変パラメーターに関するものです
はい。古典的な例はparams object[] args
:
//Allows to pass in any number and types of parameters
public static void Program(params object[] args)
典型的なユースケースは、コマンドライン環境のパラメータをプログラムに渡し、そこでパラメータを文字列として渡します。その後、プログラムはそれらを正しく検証して割り当てる必要があります。
制限:
params
キーワードは1つだけです編集:あなたの編集を読んだ後、私は私のものを作りました。以下の部分では、可変数の引数を取得する方法も取り上げていますが、params
の方法を本当に探していたと思います。
また、より古典的なものの1つは、method overloadingと呼ばれます。あなたはおそらくそれらをすでに多く使用しているでしょう:
//both methods have the same name and depending on wether you pass in a parameter
//or not, the first or the second is used.
public static void SayHello() {
Console.WriteLine("Hello");
}
public static void SayHello(string message) {
Console.WriteLine(message);
}
最後になりましたが、最も既存のもの:オプションの引数
//this time we specify a default value for the parameter message
//you now can call both, the method with parameter and the method without.
public static void SayHello(string message = "Hello") {
Console.WriteLine(message);
}
C#は、params
キーワードを使用して可変長パラメーター配列をサポートします。
以下に例を示します。
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
より多くの情報があります こちら 。
はい、 params :
public void SomeMethod(params object[] args)
paramsは最後の引数である必要があり、どのタイプでもかまいません。配列である必要があるのか、IEnumerableであるのかがわかりません。
メソッドパラメーターの可変数 を意味すると仮定します。その場合:
void DoSomething(params double[] parms)
(または固定パラメーターと混合)
void DoSomething(string param1, int param2, params double[] otherParams)
制限事項:
他の人もいるかもしれませんが、現時点ではそれだけです。詳細については、ドキュメントを確認してください。