Основы VB.NET Урок 53. Использование собственных критериев для отбора в классе List
Часто нам надо найти некоторый элемент списка List (и, возможно, что-то с ним сделать), при этом критерий поиска наш собственный. Одно дело, если мы точно знаем, что ищем (например, элемент списка с определенным значением), и совсем другое дело, если нам надо найти некоторый элемент, удовлетворяющий некоторому условию.
Вот пример:
Sub Main()
Dim list As List(Of Integer)
Dim n As Integer
list = New List(Of Integer)
'Добавление элементов в список.
list.Add(122)
list.Add(4)
list.Add(22)
'Находим первое элемент, удовлетворяющий нашему критерию.
Dim n As Integer
n = list.Find(AddressOf MyMatch)
Console.WriteLine("n = " + n.ToString())
End Sub
'Метод, определяющий критерий нашего для поиска нашего элемента.
Private Function MyMatch(ByVal p As Integer) As Boolean
If 10 > p And p > -10 Then
Return True
Else
Return False
End If
End Function
В этом примере мы ищем первый элемент нашего списка из целых, причем искомый элемент должен быть в пределах от -10 до +10.
Ключевое в этом примере - это определение метода, задающего наш критерий. У нас это метод MyMatch. Он дожен иметь определенную сигнатуру - параметр целого типа и возвращаемое значение типа boolean. И именно имя этого метода (с ключевым словом AddressOf) мы и используем как параметр предопределенного в классе List метода Find.
Выведет указаный фрагмент число 4 - это первое число, удовлетворяющее критерию нашего метода MyMatch.
По такой же модели действуют и некоторые другие методы класса List - например, FindAll или RemveAll.
|