' Collection of code snippets by Arne Vajhøj ' posted to eksperten.dk, usenet and other places (2002-now) Imports System Imports System.Collections.Generic Namespace E Public Class Rec Private _f1 As Integer Private _f2 As String Public Sub New() Me.New(0, "") End Sub Public Sub New(ByVal f1 As Integer, ByVal f2 As String) Me._f1 = f1 Me._f2 = f2 End Sub Public Property F1() As Integer Get Return _f1 End Get Set _f1 = value End Set End Property Public Property F2() As String Get Return _f2 End Get Set _f2 = value End Set End Property Public Overloads Overrides Function ToString() As String Return ("[" & _f1 & "," & _f2 & "]") End Function End Class Public Class TestClass Public Shared Sub Main(ByVal args As String()) Dim lst As New List(Of Rec) lst.Add(New Rec(1, "A")) lst.Add(New Rec(2, "BB")) lst.Add(New Rec(3, "CCC")) For Each r As Rec In lst Console.WriteLine(r) Next Dim f2 As Rec = lst.Find(AddressOf Find2) Console.WriteLine(f2) Dim fbb As Rec = lst.Find(AddressOf FindBB) Console.WriteLine(fbb) Dim f2x As Rec = lst.Find(AddressOf (New SmartFinder(2, "")).FindF1) Console.WriteLine(f2x) Dim fbbx As Rec = lst.Find(AddressOf (New SmartFinder(0, "BB")).FindF2) Console.WriteLine(fbbx) End Sub Private Shared Function Find2(ByVal r As Rec) As Boolean Return r.F1 = 2 End Function Private Shared Function FindBB(ByVal r As Rec) As Boolean Return r.F2 = "BB" End Function End Class Public Class SmartFinder Private _f1 As Integer Private _f2 As String Public Sub New(ByVal f1 As Integer, ByVal f2 As String) Me._f1 = f1 Me._f2 = f2 End Sub Public Function FindF1(ByVal r As Rec) As Boolean Return r.F1 = _f1 End Function Public Function FindF2(ByVal r As Rec) As Boolean Return r.F2 = _f2 End Function End Class End Namespace