Неявное преобразование из логического? логическое
Я получаю несколько предупреждений о неявном преобразовании и не могу понять, в чем дело. Я думаю, что у меня психическое расстройство.
Пример того, где я вижу неявное преобразование из Boolean?
в Boolean
как следует:
If Not calId Is Nothing Then
Dim calendar As Model.Calendar = db.Calendars.First(Function(x) calId = x.id)
End If
Любая помощь приветствуется.
1 ответ
Использование callId.Value
, Если callId
является Integer?
, затем callId.Value
является Integer
, Так как callId
обнуляется, выражение callId = x.id
становится обнуляемым Boolean
т.е. Boolean?
, Так как вам нужен не обнуляемый Boolean
выражение, пиши
Dim calendar As Model.Calendar = db.Calendars.First(Function(x) calId.Value = x.id)
Обратите внимание, что нулевой тест также может быть записан как
If calId.HasValue Then
Причиной этого поведения является то, что Nothing = x.id
доходность Nothing
не False
,
Обратите внимание, что calender
ограничено сферой действия Then
-блок. Если вам нужно использовать его после If-statement
поместите Dim
заявление до If
Dim calendar As Model.Calendar = Nothing
If calId.HasValue Then
calendar = db.Calendars.First(Function(x) calId.Value = x.id)
End If
Console.WriteLine(calender?.Date)