【问题标题】:How do you define a Nullable Type Property in Visual Basic如何在 Visual Basic 中定义可空类型属性
【发布时间】:2015-01-21 15:34:59
【问题描述】:

如何在 Visual Basic 中定义 Nullable 类型属性。 如何利用 Setter 中的 HasValue 属性?

谢谢。

【问题讨论】:

  • Public Property Bar As Nullable(Of Integer)Public Property Foo As Integer?
  • Google How do you define a Nullable Type Property in Visual Basic 并点击第一个结果:Nullable Value Types (Visual Basic)
  • @plutonix 为整数?
  • 是的 - 问号是 Nullable 的简写。使用 Nullables 时,您会在 Intellisense 中看到它...Dim foo as Int32?

标签: vb.net types


【解决方案1】:

除非我不理解您的问题,否则您无需担心 setter 中的 HasValue。这是一个例子:

Private _myValue As Integer?

Public Property MyValue As Integer?
    Get
        Return _myValue
    End Get

    Set(value As Integer?)
        _myValue = value
    End Set
End Property

由于value_myValue 都是Integer? 类型(即“可空”Integer),它们将匹配类型。

当然,如果您只有一个没有逻辑的普通旧 getter/setter 属性(例如延迟加载),那么使用自动实现的属性会更容易,如下所示:

Public Property MyValue As Integer?

即没有明确声明的支持字段 (Private _myValue As Integer?)。

【讨论】:

  • 这个可以增强检查是否value.HasValue然后设置setter。
  • 我的观点是支持字段本身可空类型,因此您可以设置支持字段的值而无需担心value.HasValue。我想我不明白这个问题。
  • 对不起,我的错。让我补充一下……如果这个字段是一个包含 null 的数据库字段,并且尚未设置,或者将来会设置。
  • @JeffJaffery -- 然后你会在你甚至将它分配给属性之前从课堂之外检查它。我会使用像MyClassObject.MyValue = If(Not row.IsNull("MyDBColumn"), CInt(row.Item("MyDBColumn")), New Integer?) 这样的三元“if”语句。
【解决方案2】:

Visual Basic docs 说您可以通过三种方式定义 可为空的 属性:

Dim ridesBusToWork1? As Boolean
Dim ridesBusToWork2 As Boolean?
Dim ridesBusToWork3 As Nullable(Of Boolean)

【讨论】:

  • 这些不是属性,这些是局部变量。它说“您可以通过三种方式编写声明:”
猜你喜欢
  • 2012-04-26
  • 2010-11-10
  • 2017-04-05
  • 2015-09-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多