任意の数のパラメーターを受け入れるようにC#関数を設定する方法はありますか?たとえば、次のすべてが機能するように機能を設定できますか?
x = AddUp(2, 3)
x = AddUp(5, 7, 8, 2)
x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
パラメータ配列をparams
修飾子とともに使用します。
public static int AddUp(params int[] values)
{
int sum = 0;
foreach (int value in values)
{
sum += value;
}
return sum;
}
少なくともone value(空の配列ではなく)があることを確認したい場合は、個別に指定します。
public static int AddUp(int firstValue, params int[] values)
(実装で開始するsum
をfirstValue
に設定します。)
また、通常の方法で配列参照のnullityを確認する必要があることに注意してください。メソッド内では、パラメーターは完全に普通の配列です。パラメータ配列修飾子は、callメソッドの場合にのみ違いをもたらします。基本的に、コンパイラは次のことを行います。
int x = AddUp(4, 5, 6);
次のようなものに:
int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);
あなたはcan完全に通常の配列で呼び出します-したがって、後者の構文はソースコードでも有効です。
C#4.0はオプションのパラメーターもサポートしています。これは、他の状況で役立つ場合があります。 this の記事を参照してください。
1.オーバーロード関数を作成できます。
SomeF(strin s){}
SomeF(string s, string s2){}
SomeF(string s1, string s2, string s3){}
詳細: http://csharpindepth.com/Articles/General/Overloading.aspx
2.または、paramsを使用して1つの関数を作成できます
SomeF( params string[] paramArray){}
SomeF("aa","bb", "cc", "dd", "ff"); // pass as many as you like
詳細: https://docs.Microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params
3.または単純な配列を使用できます
Main(string[] args){}