Pregunta

Estoy trabajando en mi nuevo libro de MVC y, por supuesto, las muestras están en C # como de costumbre.

Hay una línea de código que dice

public bool? WillAttend { get; set; }

El autor explica que el signo de interrogación indica que este es un bool anulable (tri-estado) que puede ser verdadero, falso. o nulo (Una nueva convención C # 3.)

¿vb.net admite alguna convención como esta? Ciertamente puedo declarar un booleano en vb.net y puedo establecerlo explícitamente en Nulo (Nada en vb.net).

¿Cuál es la diferencia? ¿Hay más en c #? Ventajas?

¿Fue útil?

Solución

  1. bool? es solo una abreviatura de sintaxis para una anulación tipo de valor : es decir, Nullable<bool>
  2. En VB.NET puede usar uno: Boolean? o Nullable (Of Boolean) .

Puede escribirlo así con una propiedad de respaldo:

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

O simplemente use una propiedad auto-implementada como esta:

Public Property WillAttend As Boolean?

Otros consejos

Puede declarar un valor anulable de 3 formas en VB:

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

Lecturas adicionales: MSDN - Tipos de valores anulables (Visual Basic) .

Los valores nulos están disponibles desde .NET 2.0. En esa versión, Microsoft implementó Generics (Nullable es un tipo genérico). Desde .NET 3.0, ¿puede usar el? en VB.NET también (anteriormente solo podías usar Nullable (de Boolean)).

Entonces, como dijo Lucas Aardvark en .NET 3.0, puede usar 3 declaraciones de nulables, pero en .NET 2.0 solo 1 es

Dim myBool as Nullable(of Boolean)

Nullable se utiliza en tipos de valores como ints, bools, etc. que no admiten asignaciones nulas. Esto generalmente es muy útil cuando los métodos devuelven enteros. Si el resultado de un método no es válido, simplemente puede devolver un conjunto int anulable a nulo en lugar de un entero negativo, lo que puede terminar siendo un resultado válido a largo plazo. Esa es prácticamente la única ventaja que viene a la mente. Otros han publicado cómo hacer esto en VB.NET. No voy a entrar en eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top