1

私は次のC#リストコードを持っています、

globalFaiths.AddAll( IEnumerable<Religion> religions )

私はそれをこのように呼びます

globalFaiths.AddAll(new Religion[]{Bahai,Christian,Islam});

C#Bahai,Christian,Islamの関数に送信するためのショットの方法はありますか?globalFaiths

4

3 に答える 3

5

次を使用できます。

globalFaiths.AddAll(new[]{Bahai,Christian,Islam});

次のように、 paramsキーワードと配列を使用するようにメソッドを変更した場合:

AddAll(params Religion[] religions)

次に、これを直接呼び出すことができます。

globalFaiths.AddAll(Bahai,Christian,Islam);

ただし、これにはコレクションクラス(globalFaithsのタイプ)のAPIを変更する必要があります。コードのこの部分を変更することがオプションである場合は、フレームワーク(つまり:)により厳密に一致するため、AddRangeの代わりに使用することを検討することもできます。AddAllList<T>.AddRange

于 2012-09-05T17:31:33.003 に答える
3

次のようにメソッドを変更できます。

public void AddAll(params Religion[] religions) 
{
    // ...
}

あなたはそれをこのように使うことができます:

globalFaiths.AddAll(Bahai, Christian, Islam);

ところで:この変更を行う場合は、Add1つの宗教のみを渡すこともできるため、メソッドに名前を付けることをお勧めします。

コードを変更できない場合、別のオプションは拡張メソッドです。

public static void Add(this Faiths faiths, params Religion[] religions)
{
    faiths.AddAll(religions);
}

確かに、コード内でそのメソッドを1回または2回だけ呼び出す場合は、少しやり過ぎかもしれません。

于 2012-09-05T17:33:42.583 に答える
1

メソッドを変更できる場合は、次のAddAllようにすることができます。

AddAll(params Religion[] religions)

そして、このようなアイテムを追加するよりも:

globalFaiths.AddAll(Bahai,Christian,Islam);
于 2012-09-05T17:34:03.680 に答える