参考
この記事は、以下の動画を参考にしています。
詳しくは、動画をご覧ください。
また、以下のブログ記事も参考になります。
C#12まで
params
引数で受け取れるのは、配列だけでした。
void SomeMethod(params int[] numbers)
{
// params引数は、配列のみ
}
C#13
配列以外のコレクションも、params
引数で受け取れます。
void SomeMethod(params IEnumerable<int> numbers)
{
// params引数は、IEnumerable<T>
}
void SomeMethod(params List<int> numbers)
{
// params引数は、List<T>
}
void SomeMethod(params ReadOnlySpan<int> numbers)
{
// params引数は、ReadOnlySpan<T>
}
IEnumerable<T>
を実装し、要素を追加するAdd(T)
メソッドを用意したクラスも、params
引数に渡せます。
// params引数を持つメソッドの呼び出し
SomeMethod(1, 2, 3, 4, 5);
// クラスをparams引数に持つメソッド
void SomeMethod(params SomeClass obj)
{
// params引数は、IEnumerable<T>を実装するクラス
}
// params引数を受け取るクラス
class SomeClass : IEnumerable<int>
{
public void Add(int item)
{
//params引数が受け取るインスタンスを作る際に、Addメソッドが利用される
}
public IEnumerator<int> GetEnumerator() { }
IEnumerator IEnumerable.GetEnumerator() { }
}