Неявное преобразование из логического? логическое

Я получаю несколько предупреждений о неявном преобразовании и не могу понять, в чем дело. Я думаю, что у меня психическое расстройство.

Пример того, где я вижу неявное преобразование из 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)
Другие вопросы по тегам