我正在处理一个 SQL Server 数据库,该数据库通常具有可以为空的 DateTime 列。我正在使用 LINQ to SQL 将我的 WinForms (VB.NET) 程序连接到数据。
我扩展了一些 LINQ 对象并添加了几个 Nullable(Of DateTime)
属性。基本上,我正在计算特定值是否存在。该值为DateTime
。如果它不存在,我想创建一个 Nullable(Of DateTime)
对象(结构,无论什么),并将 HasValue
属性设置为 False
.
我做了一些研究,显然,Nullable(Of T)
上的 New 构造函数创建了一个将 HasValue
设置为 True 的构造函数。
两个问题:
- 这是为什么?由于
Nullable(Of T)
结构是专门为此类情况创建的,为什么默认行为是HasValue
=True
? - 将
Nullable(Of T)
初始化为实际null
的最佳方法是什么?
谢谢!
最佳答案
如果您向 Nullable
构造函数提供一个值,那么它将具有给定的值,这将导致您描述的场景,其中 HasValue
为 true .
要声明 HasValue
为 false
的可为空,您可以采用以下方法之一:
Dim x As Nullable(Of DateTime)
Dim y As DateTime?
但是,如果您使用构造函数并提供值,可为 null 的结构将不会有 null 值,并且它的 HasValue
将为 true
:
Dim z As New Nullable(Of DateTime)(DateTime.Now)
关于sql-server - VB.NET - 创建 Nullable(Of T) 且 HasValue = False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8126994/