C# 将方法参数作为列表发送,而不实例化新列表
假设我有一个方法:C# 将方法参数作为列表发送,而不实例化新列表,c#,methods,parameters,parameter-passing,overloading,C#,Methods,Parameters,Parameter Passing,Overloading,假设我有一个方法: UpdateObject(IList<MyObject> objs) UpdateObject(IList objs) 我想用这个方法只发送一个对象?(我不喜欢使用方法重载,因为我不想在接口中处理很多方法) 是否有一种方法可以使用相同的方法而不执行以下操作: UpdateObject(new List<MyObject>(){singleObj}) UpdateObject(新列表(){singleObj}) 也许您可以将一个IEnumerab
UpdateObject(IList<MyObject> objs)
UpdateObject(IList objs)
我想用这个方法只发送一个对象?(我不喜欢使用方法重载,因为我不想在接口中处理很多方法)
是否有一种方法可以使用相同的方法而不执行以下操作:
UpdateObject(new List<MyObject>(){singleObj})
UpdateObject(新列表(){singleObj})
也许您可以将一个IEnumerable
传递给该方法
将单个元素附加到IEnumerable
的最简单方法可能是使用此AsIEnumerable
扩展(尽管为对象创建扩展):
您在接口上调用此方法的频率可能比实现此方法的频率更高。添加额外重载的成本可能比调用方的任何更改(在所有实例中聚合时)都要便宜。
public static IEnumerable<T> AsIEnumerable<T>(this T obj)
{
yield return obj;
}
UpdateObject(singleObj.AsIEnumerable())