10

我正在阅读我的新 MVC 书,当然,这些示例都像往常一样在 c# 中。

有一行代码说

public bool? WillAttend { get; set; }

作者解释说,问号表示这是一个可空(三态)布尔值,可以为真,也可以为假。或为空。(新的 C# 3 约定。)

vb.net 是否支持任何这样的约定。当然,我可以在 vb.net 中声明一个布尔值,并且可以将其显式设置为 Null(vb.net 中为空)。

有什么不同。在 c# 中还有更多内容吗?优点?

4

4 回答 4

42

您可以在 VB 中以 3 种方式声明可空值:

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

进一步阅读:MSDN - Nullable Value Types (Visual Basic)

于 2009-08-04T02:25:34.840 回答
27
  1. bool?只是可空值类型的简写语法:即Nullable<bool>
  2. 在 VB.NET 中,您可以使用其中之一:Boolean?Nullable(Of Boolean).

您可以使用支持属性这样编写它:

Private _willAttend As Nullable(Of Boolean)
Public Property WillAttend As Nullable(Of Boolean)
    Get
        Return _willAttend
    End Get
    Set(value As Nullable(Of Boolean))
        _willAttend = value
    End Set
End Property

或者只是使用这样的自动实现的属性

Public Property WillAttend As Boolean?
于 2009-08-04T02:24:17.527 回答
3

自 .NET 2.0 起可使用 Nullable。在该版本中,Microsoft 实现了泛型(Nullable 是泛型类型)。从 .NET 3.0 开始,您可以使用 ? 在 VB.NET 中也是如此(以前你只能使用 Nullable(of Boolean))。

正如 Lucas Aardvark 在 .NET 3.0 中所说,您可以使用 3 个可空值声明,但在 .NET 2.0 中只有 1 个

Dim myBool as Nullable(of Boolean)
于 2009-08-04T09:01:19.340 回答
0

Nullable 用于不支持空分配的值类型,例如 int、bool 等。当您的方法返回整数时,这通常非常方便。如果方法的结果无效,您可以简单地返回一个可空的 int 设置为 null 而不是负整数,从长远来看,这最终可能是一个有效的结果。这几乎是我想到的唯一优势。其他人已经发布了如何在 VB.NET 中执行此操作。我不会进入那个。

于 2009-08-04T02:32:44.190 回答