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而不是AddAll,因为这将更接近框架(即:)List<T>.AddRange

于 2012-09-05T17:31:33.003 回答
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);
}

当然,如果您只在代码中调用该方法一次或两次,这可能有点矫枉过正。

于 2012-09-05T17:33:42.583 回答
1

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

AddAll(params Religion[] religions)

而不是添加这样的项目:

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