gpt4 book ai didi

c# - 创建 IEnumerable 或 ICollection 的最简单和最紧凑的方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:37:31 28 4
gpt4 key购买 nike

因此,很多时候我们有一个接受 IEnumerable 或 ICollection 作为参数的函数。如果我们有单个项目,但没有集合来保存它们,我们必须在将它们传递给函数之前创建一个集合,例如:

T o1, o2, o3;
Foo(new T[] { o1, o2, o3 });

我总是创建一个数组或列表,就像我在上一个示例中所做的那样。但我想知道,是否有更优雅的方法来创建所需的 IEnumerable 或 ICollection?

如果有人能做到这一点,那就太酷了:

Foo({ o1, o2, o3 });

并且编译器将创建最抽象的可能集合,以满足 IEnumerable 或 ICollection 的需要(取决于函数接受哪一个)。

无论如何,如何将 o1、o2 和 o3 传递给 IEnumerable 或 ICollection 参数?

最佳答案

当前版本的 C# (3) 支持没有显式类型的表示法,即

Foo(new [] { o1, o2, o3 })

创建一个数组。还有 Linq 的 Enumerable.Range 来创建一个连续的数字范围。其他一切都必须实现。本着 Java 的精神:

public static IEnumerable<T> AsList<T>(params T[] values) {
return values;
}

这样调用:

Foo(Enumerable.AsList(o1, o2, o3));

关于c# - 创建 IEnumerable<T> 或 ICollection<T> 的最简单和最紧凑的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481381/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com