Vb.net 如何在Visual Basic中定义可为null的类型属性

Vb.net 如何在Visual Basic中定义可为null的类型属性,vb.net,types,Vb.net,Types,如何在Visual Basic中定义可为null的类型属性。 如何在Setter中利用HasValue属性 谢谢。您不必担心setter中的HasValue,除非我不理解您的问题。以下是一个例子: Private _myValue As Integer? Public Property MyValue As Integer? Get Return _myValue End Get Set(value As Integer?) _myVa

如何在Visual Basic中定义可为null的类型属性。 如何在Setter中利用HasValue属性


谢谢。

您不必担心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
\u myValue
都属于
Integer?
类型(即“nullable”
Integer
),因此它们将在类型上匹配

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

Public Property MyValue As Integer?
i、 e.没有明确声明的支持字段(
Private\u myValue As Integer?
)。

Visual Basic说明可以通过三种方式定义可为null的属性:

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

公共属性栏为可空(整数)
公共属性Foo为整数?
Google
如何在Visual Basic中定义可空类型属性
,然后单击第一个结果:.@puropoix为整数?是-问号是可空的缩写。当使用空值时,您将以智能感知的方式看到它
Dim foo as Int32?
Duplicate of this是否可以增强以检查value.HasValue,然后设置setter。我的观点是backing字段本身是可为空的类型,因此您可以设置backing字段的值,而不必担心
value.HasValue
。我想我不明白这个问题。对不起,我的错。让我补充一下。。。如果此字段是一个数据库字段,其中包含null,但尚未设置,或者将来将设置该字段,该怎么办。@JeffJaffery--那么在将其分配给属性之前,您可以从类外部进行检查。我会使用三元“if”语句,比如
MyClassObject.MyValue=if(不是row.IsNull(“MyDBColumn”)、CInt(row.Item(“MyDBColumn”)、New Integer?
。这些不是属性,而是局部变量。上面写着“你可以用三种方式写声明”: