Gibt es eine Erweiterungsmethode, die den Rückgabewert für den Lambda-Ausdruck zurückgibt? - c #, .net, linq, Erweiterungs-Methoden

Beispielsweise

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

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

Antworten:

12 für die Antwort № 1

Ich denke, du suchst nach Array.ForEach Sie müssen also nicht zuerst in eine Liste <> konvertieren.

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

6 für die Antwort № 2

Sie können die Array.ForEach-Methode verwenden

int[] array = { 1, 2, 3, 4, 5};
Array.ForEach(array, x => Console.WriteLine(x));

oder machen Sie Ihre eigene Erweiterungsmethode

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 für die Antwort № 3

Wie andere gesagt haben, du kann benutzen Array.ForEach. Vielleicht möchten Sie jedoch lesen Eric Lipperts Gedanken dazu.

Wenn du es immer noch willst, nachdem du das gelesen hast ist das Do Methode in der System.Interactive Montage, die Teil von ist Reaktive Erweiterungen, im Rahmen EnumerableEx. Du würdest es so benutzen:

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

(Ich habe den Namen der Variablen geändert, um Verwechslungen zu vermeiden. Es ist im Allgemeinen besser, keine Variablen mit demselben Namen wie einen Typ zu benennen.)

In Reactive Extensions gibt es viele tolle Dinge zu sehen ...


Verwandte Fragen