Вы можете использовать метод расширения LINQ All , чтобы проверить, имеют ли все элементы управления в массиве одинаковые теги.
Вы можете использовать Any проверить, имеет ли хотя бы один элементов управления в массиве Tag
, установленный в указанное значение.
Если у вас есть Option Strict On
, чтобы избежать NullReferenceException
, поскольку свойство Tag
имеет тип Object
и может иметь значение null (nothing
), вы можетеиспользуйте оператор Is для выполнения проверки:
(элемент управления в массиве тоже может быть nothing
в некоторый момент, поэтому мы можем использовать txt?.Tag Is (...)
. В этом случае, даже когдапо какой-то причине один из текстовых блоков равен nothing
, если все остальные текстовые поля имеют одинаковое значение Tag
, метод вернет True
)
Dim result As Boolean = allTextboxes.All(Function(txt) txt?.Tag Is "2")
Если result
равно True
, товсе свойство TextBoxes.Tag
установлено равным значению, используемому в сравнении.
Это сравнение вернет True, когда:
Как отмечает Visual Vincent , Is operator
не выполняет сравнение значений;он определяет, ссылаются ли два объекта на один и тот же объект (в этом случае строка создается программно, поэтому сравнение выполняется по ссылке на строку в таблице внутренних пулов ).
Это может бытьжелаемый результат или это может быть не так.
Настройка:
Dim TagValue As String = New String("2"c, 1)
[Control].Tag = TagValue
[Control].Tag Is "2" => False
[Control].Tag Is TagValue => True
[Control].Tag.Equals("2") => True
[Control].Tag.Equals(TagValue) => True
Если / когда требуется строгое сравнение значений, предыдущий метод может быть изменен в:
Dim result As Boolean = allTextboxes.All(Function(txt) txt.Tag.Equals("2")
Возвращается True
в обоих случаях: значение Tag
сравнивается, чтобы определить, равны ли два объекта.
Это также будет True
, в этом случае, даже если один или несколько элементов управления в массиве расположены / расположеныили null
и Option Strict
-совместимый.
Однако значение NullReferenceException
будет повышено, если для одного из свойств Tag
установлено значение nothing
.
В этом случае требуется двойная проверка:
Dim result As Boolean = allTextboxes.
All(Function(txt) txt.Tag IsNot Nothing AndAlso txt.Tag.Equals("2"))