最喜欢的方式来创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");