我发现在VB.NET一个简单的错误,可以很容易地复制:VB.NET如果(三元)错误
Dim pDate As Date?
Dim pString As String = ""
' works fine as expected
pDate = If(False, "", Nothing)
' expected: pDate will be set to Nothing.
' BUG: Conversion from string "" to type 'Date' is not valid.
pDate = If(False, pString, Nothing)
'These both fail with the same error
pDate = pString
Dim pDate2 As Date? = ""
问:这是一个错误?或者我或我的电脑有问题吗? 如果这是一个错误,是否有这个错误报告(我似乎无法找到它)?
教训:
- 这是不是一个错误
- 可空日期接受对象没有
- 可空日期接受字符串没有
pDate = Nothing ' ok. nullable date accepts object nothing
pString = Nothing
pDate = pString ' error. nullable date rejects string nothing
这是一个错误?你*不能*将'''''转换为'日期'。即使'If'(与'IIf'相反)在运行时只计算一边并不意味着编译器不检测类型不匹配。 –
是的,我知道编译器仍然检测到类型不匹配,但是(pDate =“”)是有效的,而(pDate = pString)不是(pString =“”) – Arvin
pDate =“”如果Option严格或选项推断开启。 –