代码之家  ›  专栏  ›  技术社区  ›  Seth Spearman

在vb.net中是否存在可为空的bool

  •  8
  • Seth Spearman  · 技术社区  · 16 年前

    我正在研究我的新MVC书籍,当然,这些样本和往常一样都是C。

    有一行代码说

    public bool? WillAttend { get; set; }
    

    作者解释说,问号表明这是一个可以为空(三态)的bool,可以是真、假。或为空。(新的C 3公约。)

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

    有什么区别。C里还有更多的吗?优势?

    4 回复  |  直到 8 年前
        1
  •  22
  •   KyleMit Steven Vachon    8 年前
    1. bool? 只是速记 syntax for a nullable value type 也就是说 Nullable<bool>
    2. 在vb.net中,您可以使用以下任一项: Boolean? Nullable(Of Boolean) .

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

    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
  •  39
  •   KyleMit Steven Vachon    8 年前

    可以用vb三种方法声明可为空的值:

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

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

        3
  •  3
  •   Gertjan    16 年前

    从.NET 2.0开始可以使用空值。在该版本中,Microsoft实现了泛型(nullable是泛型类型)。从.NET 3.0开始,您可以使用?在vb.net中(以前只能使用nullable(布尔值))。

    正如LucasAardvark在.NET3.0中所说,您可以使用3个可空值声明,但在.NET2.0中只有1个

    Dim myBool as Nullable(of Boolean)
    
        4
  •  0
  •   Serge    16 年前

    nullable用于不支持空赋值的值类型,如int、bools等。当方法返回整数时,这通常非常方便。如果一个方法的结果无效,您可以简单地返回一个设置为空的nullable int,而不是一个负整数,从长远来看,这可能是一个有效的结果。这几乎是我想到的唯一优势。其他人已经在vb.net上发布了如何做到这一点。我不想谈这个。