我有以下C#列表代码,
globalFaiths.AddAll( IEnumerable<Religion> religions )
我称之为
globalFaiths.AddAll(new Religion[]{Bahai,Christian,Islam});
是否有一种镜头方式可以将Bahai,Christian,Islam
发送到c#中的globalFaiths
函数?
答案 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);