Ash*_*son 9 .net c# ienumerable icollection function-parameter
因此,很多时候我们有一个接受IEnumerable或ICollection作为参数的函数.如果我们有单个项目,但没有集合来保存它们,我们必须在将它们传递给函数之前创建一个集合,如:
T o1, o2, o3;
Foo(new T[] { o1, o2, o3 });
Run Code Online (Sandbox Code Playgroud)
我总是创建一个数组或列表,就像我在上一个例子中所做的那样.但我想知道,是否有更优雅的方式来创建所需的IEnumerable或ICollection?
如果能做到这一点,那将是非常酷的:
Foo({ o1, o2, o3 });
Run Code Online (Sandbox Code Playgroud)
编译器将创建最抽象的可能集合,以满足IEnumerable或ICollection的需要(取决于函数接受哪一个).
无论如何,如何将o1,o2和o3传递给IEnumerable或ICollection参数?
Kon*_*lph 11
当前版本的C#(3)支持没有显式类型的表示法,即
Foo(new [] { o1, o2, o3 })
Run Code Online (Sandbox Code Playgroud)
创建一个数组.还有Linq Enumerable.Range用于创建连续的数字范围.其他一切都必须实施.本着Java的精神:
public static IEnumerable<T> AsList<T>(params T[] values) {
return values;
}
Run Code Online (Sandbox Code Playgroud)
被称为这样:
Foo(Enumerable.AsList(o1, o2, o3));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1880 次 |
| 最近记录: |