【问题标题】:Send Method parameter as List without instantiating new List将方法参数作为列表发送而不实例化新列表
【发布时间】:2012-09-25 17:22:22
【问题描述】:

假设我有一个方法:

 UpdateObject(IList<MyObject> objs)

我想用那个方法只发送一个对象? (我不喜欢使用方法重载,因为我不想在我的界面中处理很多方法)

有没有一种方法可以在不执行以下操作的情况下使用相同的方法:

UpdateObject(new List<MyObject>(){singleObj})

【问题讨论】:

  • 您在接口上调用此方法的次数可能比实现它的次数要多。添加额外重载的成本可能比调用方的几乎任何更改都便宜(当汇总到所有实例时)。

标签: c# methods parameters parameter-passing overloading


【解决方案1】:

也许您可以将 IEnumerable&lt;MyObject&gt; 传递给该方法。

将单个元素附加到IEnumerable&lt;T&gt; 的最简单方法可能是使用此AsIEnumerable 扩展(尽管Eric Lippert advises against 为对象创建扩展):

public static IEnumerable<T> AsIEnumerable<T>(this T obj)
{
    yield return obj;
} 

现在您可以将所有内容都用作IEnumerable

UpdateObject(singleObj.AsIEnumerable())

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2012-06-02
    • 2020-02-07
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多