public static IEnumerable<T> CreateEnumerable<T>(params T[] values) =>
values;
//And then use it
IEnumerable<string> myStrings = CreateEnumerable("first item", "second item");//etc..
或者只是做:
IEnumerable<string> myStrings = new []{ "first item", "second item"};
// this makes EnumerableHelpers static members accessible
// from anywhere inside your project.
// you can keep this line in the same file as the helper class,
// or move it to your custom global using file.
global using static Utils.EnumerableHelpers;
namespace Utils;
public static class EnumerableHelpers
{
/// <summary>
/// Returns only non-null values from passed parameters as <see cref="IEnumerable{T}"/>.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="values"></param>
/// <returns><see cref="IEnumerable{T}"/> of non-null values.</returns>
public static IEnumerable<T> NewEnumerable<T>(params T[] values)
{
if (values == null || values.Length == 0) yield break;
foreach (var item in values)
{
// I added this condition for my use case, remove it if you want.
if (item != null) yield return item;
}
}
}
下面是如何使用它:
// Use Case 1
var numbers = NewEnumerable(1, 2, 3);
// Use Case 2
var strings = NewEnumerable<string>();
strings.Append("Hi!");
9条答案
按热度按时间sczxawaw1#
好吧,加上你所陈述的答案,你可能也在寻找
或
xghobddn2#
IEnumerable<T>
是接口。你需要用一个具体的类型(实现IEnumerable<T>
)来初始化。示例:flmtquvp3#
由于
string[]
实现了IEnumerable2wnc66cl4#
IEnumerable
只是一个接口,所以不能直接示例化。您需要创建一个具体的类(如
List
)然后你可以把它传递给任何期望
IEnumerable
的东西。cbwuti445#
mwngjboj6#
IEnumerable是一个接口,而不是寻找如何创建接口示例,而是创建一个匹配接口的实现:创建列表或数组。
eit6fx6z7#
不能示例化接口-必须提供IEnumerable的具体实现。
smdncfj38#
你可以创建一个静态方法,它将返回所需的IEnumerable,如下所示:
或者只是做:
nbysray59#
这里有一种方法,通过在
c# 10
中使用新的global using
来实现。下面是如何使用它: