VB.NET没有日期时间吗?dataReader

测试员

一个简单的问题,如果是否内联:将mydate设置为datetime?


'版本1(工作!)

If dtReader.IsDBNull(dtReader.GetOrdinal("mydate")) Then
    mydate = Nothing
Else
    mydate = dtReader.GetDateTime(dtReader.GetOrdinal("mydate"))
End If

值=无


'第2版(完全无效!)

mydate = If(dtReader.IsDBNull(dtReader.GetOrdinal("mydate")), Nothing, dtReader.GetDateTime(dtReader.GetOrdinal("mydate")))

值=#12:00:00#


有人可以解释一下为什么版本2获得此值吗?

Damien_The_Unbeliever

这取决于编译器必须在上进行类型分析If请记住,Nothing它与C#的null不同,它更接近于default(T)

如果变量的值类型不能为空,则将其赋值为No会将其设置为声明类型的默认值

现在,当编译器正在分析时If,必须确定整个表达式的类型。这是它在看什么:

If(Boolean,<AnyType>,DateTime)

现在,它必须根据第二个和第三个参数的类型来决定表达式的类型,并且必须选择一个存在的类型。因此,自然而然地选择了DateTime并且Nothing转换为aDateTime与最小值相同。

要更改此设置,可以选择推断类型为DateTime?

mydate = If(dtReader.IsDBNull(dtReader.GetOrdinal("mydate")), _
          CType(Nothing,DateTime?), _
          dtReader.GetDateTime(dtReader.GetOrdinal("mydate")))

根据《Visual Basic语言规范》第11.22节(条件表达式):

如果提供了三个操作数,则必须将所有三个表达式分类为值,并且第一个操作数必须是布尔表达式。如果表达式的结果为true,则第二个表达式将是运算符的结果,否则第三个表达式将是运算符的结果。表达式的结果类型是第二个表达式和第三个表达式的类型之间的主导类型如果没有显性类型,则会发生编译时错误。

(我的重点)。

并且请注意,没有关于“如果在赋值语句中使用此条件,则还可以考虑所赋变量的声明类型”的条件文本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Vb.net中的日期时间错误

来自分类Dev

SQL日期时间溢出。Vb.net

来自分类Dev

vb.net-PrintDialog没有出现

来自分类Dev

在VB .NET应用程序中转换日期时间

来自分类Dev

在Vb.net中转换日期时间格式

来自分类Dev

在VB.NET中将日期和时间联接到DateTime

来自分类Dev

vb.net和MSSQL的日期时间问题

来自分类Dev

在Vb.net中转换日期时间格式

来自分类Dev

在VB .NET应用程序中转换日期时间

来自分类Dev

vb.net和MSSQL的日期时间问题

来自分类Dev

vb.net日期值将转换为时间

来自分类Dev

VB.net GROUP 按日期忽略时间

来自分类Dev

从 VB.NET 错误插入 SQL 日期时间

来自分类Dev

VB.Net在线时间

来自分类Dev

vb .net之间的时间间隔

来自分类Dev

VB NET转换日期格式

来自分类Dev

vb.net已经有与此连接关联的打开的DataReader,必须首先关闭

来自分类Dev

需要的日期格式(VB)

来自分类Dev

VB使用日期选择

来自分类Dev

在vb中排序日期

来自分类Dev

VB.NET和VB之间的区别

来自分类Dev

在SQL Server和VB.Net之间具有一致的日期时间格式的最佳方法

来自分类Dev

在SQL Server和VB.Net之间具有一致的日期时间格式的最佳方法

来自分类Dev

VB.NET MySQL查询没有返回值

来自分类Dev

在 VB.Net 中没有 EndsWith 时选择 LINQ

来自分类Dev

VB NET,累积损坏

来自分类Dev

VB Net IsDBNull问题

来自分类Dev

Vb.net-FolderBrowserDialog

来自分类Dev

VB.NET FolderBrowserDialog