Metodi di estensione - ForEach

Scritto da  Marco Amendola il lunedì 19 luglio 2010  •  Linguaggio: C#,VB   • Livello: 100


Un metodo di estensione, divenuto ormai un classico, utile a "distribuire" un'azione su tutti gli elementi di un IEnumerable<>

C#

public static class EnumerableExtension
{
public static void ForEach<T>(this IEnumerable<T> self, Action<T> action)
{
if (action == null) return;
foreach (var item in self)
action.Invoke(item);
}
}

 

VB.NET

Imports System.Runtime.CompilerServices

Public Module Extensions

<Extension()> _
Public Sub ForEach(Of T)(ByVal ienum As IEnumerable(Of T), ByVal action As Action(Of T))
If action IsNot Nothing Then
For Each item In ienum
action.Invoke(item)
Next
End If
End Sub

End Module

 

Di seguito un esempio di utilizzo:

C#

var mySourceStringArray = new string[] { "The", "quick", "brown", "fox"};
var myDestinationStringList = new List<string>();
mySourceStringArray.ForEach(myDestination.Add);
myDestinationStringList.ForEach(x => Debug.Write(x + " "));

 

VB.NET

Private Sub Main()
Dim mySourceStringArray = New String() {"The", "quick", "brown", "fox"}
Dim myDestinationStringList = New List(Of String)()
mySourceStringArray.ForEach(AddressOf myDestinationStringList.Add)
myDestinationStringList.ForEach(AddressOf Write)
End Sub

Private Sub Write(ByVal x As String)
Debug.Write(x + " ")
End Sub

 


Tags: Linq,enumerator

 
x