Проверьте нулевое значение для типов значений в VB.NET - PullRequest
0 голосов
/ 12 марта 2020

У меня есть KeyValuePair(Of TKey,TValue), и я хочу проверить, является ли он нулевым или нет:

Dim dictionary = new Dictionary(Of Tkey,TValue)
Dim keyValuePair = dictionary.FirstOrDefault(Function(item) item.Key = *someValue*)

If keyValuePair isNot Nothing Then 'not valid because keyValuePair is a value type
    ....
End If

If keyValuePair <> Nothing Then 'not valid because operator <> does not defined for KeyValuePair(of TKey,TValue)
   ...
End If

Как я могу проверить, является ли keyValuePair нулевым или нет?

1 Ответ

1 голос
/ 12 марта 2020

KeyValuePair(Of TKey, TValue) является структурой (структура), имеет значение по умолчанию, с которым вы можете сравнить.

Dim dictionary As New Dictionary(Of Integer, string)
Dim keyValuePair = dictionary.FirstOrDefault(Function(item) item.Key = 2)

Dim defaultValue AS KeyValuePair(Of Integer, string) = Nothing

If keyValuePair.Equals(defaultValue) Then
    ' Not found
Else
    ' Found
End If

Nothing представляет значение по умолчанию соответствующего типа.

Но потому что вы ищете Dictionary для ключа, вы можете использовать TryGetValue вместо

Dim dictionary As New Dictionary(Of Integer, string)
Dim value As String

If dictionary.TryGetValue(2, value) Then
    ' Found
Else
    ' Not found
End If
...