c#可枚举列表的捷径

c#可枚举列表的捷径,c#,C#,我有以下C#列表代码 globalFaiths.AddAll( IEnumerable<Religion> religions ) 是否有更快捷的方式将巴哈伊、基督教、伊斯兰教发送到c#中的globalfiths函数?您可以使用: globalFaiths.AddAll(new[]{Bahai,Christian,Islam}); 如果将方法更改为使用和数组,如下所示: AddAll(params Religion[] religions) 然后您可以直接将其称为: globa

我有以下C#列表代码

globalFaiths.AddAll( IEnumerable<Religion> religions )
是否有更快捷的方式将巴哈伊、基督教、伊斯兰教发送到c#中的
globalfiths
函数?

您可以使用:

globalFaiths.AddAll(new[]{Bahai,Christian,Islam});
如果将方法更改为使用和数组,如下所示:

AddAll(params Religion[] religions)
然后您可以直接将其称为:

globalFaiths.AddAll(Bahai,Christian,Islam);
但是,这需要更改集合类(
globalfiths
的类型)的API。如果改变代码的这一部分是一个选项,您可能还需要考虑使用<代码> AddRange <代码>而不是<代码> AddAll <代码>,因为这将更贴近框架(即:):

可以使用:

globalFaiths.AddAll(new[]{Bahai,Christian,Islam});
如果将方法更改为使用和数组,如下所示:

AddAll(params Religion[] religions)
然后您可以直接将其称为:

globalFaiths.AddAll(Bahai,Christian,Islam);

但是,这需要更改集合类(
globalfiths
的类型)的API。如果改变代码的这一部分是一个选项,您可能还需要考虑使用<代码> AddRange <代码>而不是<代码> AddAll <代码>,因为这将更贴近框架(即:):

您可以这样改变:
public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);
您可以像这样使用它:

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);
顺便说一句:如果您要进行此更改,最好将方法命名为
Add
,因为也可以只传递一种宗教

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

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

诚然,如果您在代码中只调用该方法一次或两次,这可能有点过头了。

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

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);
您可以像这样使用它:

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);
顺便说一句:如果您要进行此更改,最好将方法命名为
Add
,因为也可以只传递一种宗教

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

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

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

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

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);
然后添加如下项目:

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);

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

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);
然后添加如下项目:

public void AddAll(params Religion[] religions) 
{
    // ...
}
globalFaiths.AddAll(Bahai, Christian, Islam);
AddAll(params Religion[] religions)
globalFaiths.AddAll(Bahai,Christian,Islam);

我投了赞成票,但我忘了提到我不能更改代码的这一部分。@BahaiResearch.com:请检查此案例的更新想法。我投了赞成票,但我忘了提到我不能更改代码的这一部分。@BahaiResearch.com:请检查此案例的更新想法。我只会使用
new[]{}
它不像另一个选项那么详细,也不需要API更改。@StanR。我也会,这就是为什么我首先包括它——虽然参数通常非常有用,并且很好地包含在API中——但这实际上取决于如何使用它。@StanR.:一个想法是:
new[]{}
在字符方面没有太多开销,但它与类型有关。这可能是引入方法的
params
版本的充分理由。我只会使用
new[]{}
它不像其他选项那样详细,并且不需要更改API。@StanR。我也会,这就是为什么我首先包括它——虽然参数通常非常有用,并且很好地包含在API中——但这实际上取决于如何使用它。@StanR.:一个想法是:
new[]{}
在字符方面没有太多开销,但它与类型有关。这可能是引入方法的
params
版本的充分理由。