【发布时间】:2010-06-13 21:12:28
【问题描述】:
例如
int[] Array = { 1, 23, 4, 5, 3, 3, 232, 32, };
Array.JustDo(x => Console.WriteLine(x));
【问题讨论】:
-
我知道我可以编写自己的扩展方法,但我想知道是否已经存在。
标签: c# .net linq extension-methods
例如
int[] Array = { 1, 23, 4, 5, 3, 3, 232, 32, };
Array.JustDo(x => Console.WriteLine(x));
【问题讨论】:
标签: c# .net linq extension-methods
我认为您正在寻找Array.ForEach,它不需要您先转换为列表。
int[] a = { 1, 23, 4, 5, 3, 3, 232, 32, };
Array.ForEach(a, x => Console.WriteLine(x));
【讨论】:
您可以使用 Array.ForEach 方法
int[] array = { 1, 2, 3, 4, 5};
Array.ForEach(array, x => Console.WriteLine(x));
或制作自己的扩展方法
void Main()
{
int[] array = { 1, 2, 3, 4, 5};
array.JustDo(x => Console.WriteLine(x));
}
public static class MyExtension
{
public static void JustDo<T>(this IEnumerable<T> ext, Action<T> a)
{
foreach(T item in ext)
{
a(item);
}
}
}
【讨论】:
正如其他人所说,您可以使用Array.ForEach。不过,您可能想阅读Eric Lippert's thoughts on this。
如果您在阅读后仍然想要它,有System.Interactive 程序集中的Do 方法,它是Reactive Extensions 的一部分,作为EnumerableEx 的一部分。你可以这样使用它:
int[] array = { 1, 23, 4, 5, 3, 3, 232, 32, };
array.Do(x => Console.WriteLine(x));
(我已经更改了变量的名称以避免混淆。通常最好不要将变量命名为与类型相同的名称。)
在 Reactive Extensions 中有很多很棒的东西值得一看...
【讨论】: