c#ienumerable列表的快捷方式

时间:2012-09-05 17:30:22

标签: c#

我有以下C#列表代码,

globalFaiths.AddAll( IEnumerable<Religion> religions )

我称之为

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

是否有一种镜头方式可以将Bahai,Christian,Islam发送到c#中的globalFaiths函数?

3 个答案:

答案 0 :(得分:5)

您可以使用:

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

如果您更改方法以使用params keyword和数组,请执行以下操作:

AddAll(params Religion[] religions)

然后你可以直接调用它:

globalFaiths.AddAll(Bahai,Christian,Islam);

但是,这需要更改集合类的API(globalFaiths的类型)。如果更改此部分代码是一个选项,您可能还需要考虑使用AddRange而不是AddAll,因为这会更接近地匹配框架(即:List<T>.AddRange)。< / p>

答案 1 :(得分:3)

您可以像这样更改您的方法:

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

你可以这样使用它:

globalFaiths.AddAll(Bahai, Christian, Islam);

顺便说一句:如果你要进行这项改动,最好将方法命名为Add,因为它也可能只传递一种宗教信仰。

如果您无法更改代码,则另一个选项是扩展方法:

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

当然,如果您只在代码中调用该方法一次或两次,那可能会有点过分。

答案 2 :(得分:1)

如果您可以更改AddAll方法,则可以执行以下操作:

AddAll(params Religion[] religions)

然后添加这样的项目:

globalFaiths.AddAll(Bahai,Christian,Islam);