c#中单项集合的简写
本文关键字:集合 单项 | 更新日期: 2023-09-27 18:01:54
我有很多代码采用以下模式
void Add(int foo)
{
$my question
}
void Add(List<int> bar)
{
//do stuff
}
我想知道(除了写一个扩展方法)如果有比写更短的东西:
Add(new List<int>(new int[]{foo}));
每次我想调用第二个方法。
如果您可以修改第二个方法,那么如果是
可能会更好void Add(params int[] bar)
{
}
你可以叫它Add(foo, foo2, foo3)
或Add(myList.ToArray())
看一下params关键字
假设你使用c# 3或更高版本,你可以使用集合初始化器:
Add(new List<int> { foo });
这相当于:
List<int> tmp = new List<int>();
tmp.Add(foo);
Add(tmp);
我不确定它是否足够短,但这将工作良好:
Add(new List<int> { foo });
可以直接在List上使用集合初始化式:
Add(new List<int> { foo });
我倾向于使用IEnumerable
作为序列参数,并使用new []
语法来传递隐式类型的数组:
public void Add (IEnumerable<int> bar)
{
}
// accepts:
Add (new List<int> { 1, 2, 3 });
Add (Enumerable.Range (1, 10));
Add (new [] { 1 });
作为一个变体,您可能想要定义一个"放大"扩展方法:
public IEnumerable<T> Amplify (T item)
{
yield return item;
}
Add (1.Amplify ())
您需要像下面这样重构代码:
void Add(int bar)
{
//Code for single element
}
void Add(List<int> foo)
{
foreach(int i in foo)
{
Add(i);
}
}