0
0

params引数で配列以外を受け取る(C#13)

Posted at

参考

この記事は、以下の動画を参考にしています。
詳しくは、動画をご覧ください。

また、以下のブログ記事も参考になります。

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() { }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0