Смотри пример. Маленькая процедура, в которой я проверяю объект a на nothing
Сравнение делаю тремя методоми: NOT IS Nothing, ISNOT Nothing и IsNothing().
- Код: Выделить всё
Private Sub test()
Dim a As Object
'IsNot Nothing
If a IsNot Nothing Then
MessageBox.Show("IsNot")
End If
'Non Is
If Not a Is Nothing Then
MessageBox.Show("Not")
End If
'IsNothing
If Not IsNothing(a) Then
MessageBox.Show("IsNothing")
End If
End Sub
Результат, во всех случаях будет один. Но посмотрим, как в конечном счёте выглядит код для компилятора:
- Код: Выделить всё
Private Sub test()
Dim a As Object
If Not (a) Is Nothing Then
MessageBox.Show("IsNot")
End If
If Not (a) Is Nothing Then
MessageBox.Show("Not")
End If
If Not Information.IsNothing(RuntimeHelpers.GetObjectValue(a)) Then
MessageBox.Show("IsNothing")
End If
End Sub
IsNot стало Not Is! Как я уже и говорил Not Is всегда можно использовать вместо IsNot, так как в конечном счёте это одно и тоже.
С IsNothing дело выглядит иначе, это уже не просто оператор, а полноценная функция, которая возвращаяе "булочное" значение.
Быстрей ли эта функция чем операторы или нет, не знаю. Думаю это больше дело вкуса. Я например ещё ниразу не использовал функцию IsNothing.