最喜欢的方式来创build一个新的IEnumerable <T>序列从一个单一的值?
我通常使用数组语法从单个值创build一个序列,如下所示:
IEnumerable<string> sequence = new string[] { "abc" };
或者使用一个新的列表。 我想听听有没有人有更富有performance力的方式去做同样的事情。
你的例子不是一个空的序列,它是一个元素的序列。 要创build一个空的string序列,你可以做
var sequence = Enumerable.Empty<string>();
编辑 OP澄清他们正在寻找创造一个单一的价值。 在这种情况下
var sequence = Enumerable.Repeat("abc",1);
我喜欢你的build议,但省略了数组types:
var sequence = new[] { "abc" };
甚至更短,
string[] single = { "abc" };
我会做一个扩展方法:
public static T[] Yield<T>(this T item) { T[] single = { item }; return single; }
甚至更好,更短
public static IEnumerable<T> Yield<T>(this T item) { yield return item; }
也许这正是Enumerable.Repeat
正在做的事情。
或者只是创build一个方法
public static IEnumerable<T> CreateEnumerable<T>(params T[] items) { if(items == null) yield break; foreach (T mitem in items) yield return mitem; }
要么
public static IEnumerable<T> CreateEnumerable<T>(params T[] items) { return items ?? Enumerable.Empty<T>(); }
用法:
IEnumerable<string> items = CreateEnumerable("single");