我收到了一些隐式转换警告,我不能为我的生活弄清楚出了什么问题。我想我有精神障碍。
我看到从Boolean?
到Boolean
的隐式转换的示例如下:
If Not calId Is Nothing Then
Dim calendar As Model.Calendar = db.Calendars.First(Function(x) calId = x.id)
End If
非常感谢任何帮助。
答案 0 :(得分:2)
使用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)
请注意,null测试也可以写为
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)