Есть ли какой-либо метод расширения, который возвращает vambda, лямбда-выражение? - PullRequest
4 голосов
/ 14 июня 2010

Например

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

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

Ответы [ 3 ]

12 голосов
/ 14 июня 2010

Я думаю, что вы ищете Array.ForEach , который не требует, чтобы вы сначала конвертировали в список <>.

int[] a = { 1, 23, 4, 5, 3, 3, 232, 32, };
Array.ForEach(a, x => Console.WriteLine(x));
6 голосов
/ 14 июня 2010

Вы можете использовать метод 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 голосов
/ 14 июня 2010

Как уже говорили другие, вы можете использовать Array.ForEach.Тем не менее, вы можете прочитать мысли Эрика Липперта об этом .

Если после прочтения этого вам все еще нужно, в методе есть *1009* Do1011 * сборка, которая является частью Reactive Extensions , как часть EnumerableEx.Вы бы использовали это так:

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

(я изменил имя переменной, чтобы избежать путаницы. Как правило, лучше не называть переменные с тем же именем, что и у типа.)

В Reactive Extensions есть много интересного ...

...