Чтобы извлечь Integer
из Integer?
, необходимо указать запасное значение, которое будет использоваться в случае, если Integer?
равно Nothing
. Метод GetValueOrDefault
делает именно это.
См. Следующий пример:
Dim x As Integer? = 7
Dim y As Integer? = Nothing
Dim z As Integer = 7
Console.WriteLine(If(z = x.GetValueOrDefault(-1), "yes", "no")) ' Prints yes
Console.WriteLine(If(z = y.GetValueOrDefault(-1), "yes", "no")) ' Prints no
Однако, если вам нужно только сравнить Integer
с Integer?
, не нужно ничего извлекать. Вы можете сравнивать их напрямую.
Dim x As Integer? = 7
Dim y As Integer? = Nothing
Dim z As Integer = 7
Console.WriteLine(If(z = x, "yes", "no")) ' Prints yes
Console.WriteLine(If(z = y, "yes", "no")) ' Prints no
Оператор безопасной навигации (используемый в вашем фрагменте кода) просто разрешит значение Nothing
, если его операнд также Nothing
. Не похоже, что вы хотите здесь.