【问题标题】:Is there a way of converting a T to a IEnumerable<T> without using Add or AddRange有没有办法在不使用 Add 或 AddRange 的情况下将 T 转换为 IEnumerable<T>
【发布时间】:2013-08-16 11:30:09
【问题描述】:

我有一个节点列表:

IEnumerable<Node> list

我也有一个单品

Node item 

是否可以直接用没有 List.Add 或 List.AddRange 的项目替换列表?

list = item // do something here to convert/cast

【问题讨论】:

    标签: c# asp.net ienumerable


    【解决方案1】:
    IEnumerable<Node> list = new[] { item };
    

    单元素数组?

    相当于:

    IEnumerable<Node> list = new Node[] { item };
    

    【讨论】:

      【解决方案2】:

      方法很多,另一种可能是扩展

      public static IEnumerable<T> ToEnumerable<T>(this T source)
      {
          yield return source;
      }
      

      所以你可以这样做

      IEnumerable<Node> aSequenceOfOne = item.ToEnumerable();
      

      尽管在实践中,the array 似乎总是很务实,尽管有分配。

      【讨论】:

      • 考虑到您的回复将newIEnumerable&lt;Node&gt; 的隐藏类,这就像锅叫水壶黑色:-)
      • @xanatos,我同意,我怀疑数组的分配在幕后有点简单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 2019-02-08
      • 2012-02-24
      • 2021-12-02
      相关资源
      最近更新 更多