我通常使用数组语法从单个值创建一个序列,如下所示:
IEnumerable<string> sequence = new string[] { "abc" };
Run Code Online (Sandbox Code Playgroud)
或使用新的列表.我想听听是否有人有更具表现力的方式来做同样的事情.
Jar*_*Par 142
您的示例不是空序列,它是具有一个元素的序列.要创建一个空字符串序列,您可以这样做
var sequence = Enumerable.Empty<string>();
Run Code Online (Sandbox Code Playgroud)
编辑 OP明确表示他们希望创建单一价值.在这种情况下
var sequence = Enumerable.Repeat("abc",1);
Run Code Online (Sandbox Code Playgroud)
Bry*_*tts 65
我喜欢你的建议,但省略了数组类型:
var sequence = new[] { "abc" };
Run Code Online (Sandbox Code Playgroud)
naw*_*fal 21
甚至更短,
string[] single = { "abc" };
Run Code Online (Sandbox Code Playgroud)
我会做一个扩展方法:
public static T[] Yield<T>(this T item)
{
T[] single = { item };
return single;
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好更短
public static IEnumerable<T> Yield<T>(this T item)
{
yield return item;
}
Run Code Online (Sandbox Code Playgroud)
也许这正是Enumerable.Repeat引擎盖下的事情.
或只是创建一个方法
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
if(items == null)
yield break;
foreach (T mitem in items)
yield return mitem;
}
Run Code Online (Sandbox Code Playgroud)
要么
public static IEnumerable<T> CreateEnumerable<T>(params T[] items)
{
return items ?? Enumerable.Empty<T>();
}
Run Code Online (Sandbox Code Playgroud)
用法:
IEnumerable<string> items = CreateEnumerable("single");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75512 次 |
| 最近记录: |