sql-server - VB.NET - 创建 Nullable(Of T) 且 HasValue = False

标签 sql-server vb.net linq-to-sql datetime nullable

我正在处理一个 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 的构造函数。

两个问题:

  1. 这是为什么?由于 Nullable(Of T) 结构是专门为此类情况创建的,为什么默认行为是 HasValue = True
  2. Nullable(Of T) 初始化为实际 null 的最佳方法是什么?

谢谢!

最佳答案

如果您向 Nullable 构造函数提供一个值,那么它将具有给定的值,这将导致您描述的场景,其中 HasValue 为 true .

要声明 HasValuefalse 的可为空,您可以采用以下方法之一:

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/

相关文章:

sql - 如何使用 LINQ2SQL 通过存储库在 DB 上运行集成测试?

c# - 在 A '< List >' 中检索数据/数据

sql - JOIN 在另一台数据库服务器上的表上与 JOIN 在另一台服务器上的表上的 SELECT

android - 在 SQL Server 上使用参数和通配符

javascript - 根据h1动态更新一个html元素值

c - 是否可以验证 IMEI 号码?

sql-server - 包含 1.5 亿页的 100,000 个 PDF 的文本索引

sql-server - Azure 弹性数据库池,数据库的最大存储容量是多少?

c# - 我如何复制从我试图从中复制的对象继承的对象?

c# - 简单选择上的 LINQ NullReferenceException