是否有任何扩展方法获得void返回lambda表达式?

时间:2010-06-13 21:12:29

标签: c# .net linq extension-methods

例如

int[] Array = { 1, 23, 4, 5, 3, 3, 232, 32, };

Array.JustDo(x => Console.WriteLine(x));

3 个答案:

答案 0 :(得分:12)

我认为您正在寻找Array.ForEach,这不需要您转换为List<>第一

int[] a = { 1, 23, 4, 5, 3, 3, 232, 32, };
Array.ForEach(a, x => Console.WriteLine(x));

答案 1 :(得分:6)

您可以使用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);
        }
    }
}

答案 2 :(得分:2)

正如其他人所说,你可以使用Array.ForEach。但是,您可能希望阅读Eric Lippert's thoughts on this

如果你在阅读之后仍然想要它, Do程序集中的System.Interactive方法,它是Reactive Extensions的一部分,作为{{3}}的一部分{1}}。你会这样使用它:

EnumerableEx

(我已经更改了变量的名称以避免混淆。通常最好不要将变量命名为与类型相同的名称。)

在Reactive Extensions中有很多值得关注的东西......