在vb.net中是否存在可以为空的bool这样的东西

时间:2009-08-04 02:20:50

标签: vb.net nullable

我正在处理我的新MVC书,当然,样本都像往常一样在c#中。

有一行代码

public bool? WillAttend { get; set; }

作者解释说,问号表明这是一个可以为空的(三态)布尔,可以是真的,错误的。或者为null。 (新的C#3惯例。)

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

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

4 个答案:

答案 0 :(得分:39)

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

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

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

答案 1 :(得分:23)

  1. bool?只是简写syntax for a nullable value type:即Nullable<bool>
  2. 在VB.NET中,您可以使用其中一个:Boolean?Nullable(Of Boolean)
  3. 你可以像这样写一个支持属性:

    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
    

    或者只使用这样的auto-implemented property

    Public Property WillAttend As Boolean?
    

答案 2 :(得分:3)

自.NET 2.0以来可以使用Nullables。在该版本中,Microsoft实现了Generics(Nullable是Generic类型)。从.NET 3.0开始,您可以使用?在VB.NET中(以前你只能使用Nullable(布尔))。

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

Dim myBool as Nullable(of Boolean)

答案 3 :(得分:0)

Nullable用于值类型,如int,bools等,不支持空赋值。当方法返回整数时,这通常非常方便。如果方法的结果无效,则可以简单地将可空int设置返回null而不是负整数,这可能在长期运行中最终成为有效结果。这几乎是我想到的唯一优势。其他人已经在VB.NET中发布了如何做到这一点。我不会进入那个。