2009-08-04 12 views
8

Pracuję przez moją nową książkę MVC i oczywiście, próbki są wszystkie w C# jak zwykle.Czy istnieje coś takiego jak zerowalny bool w vb.net

Jest to linia kodu, który mówi

public bool? WillAttend { get; set; } 

Autor wyjaśnia, że ​​znak zapytania oznacza, że ​​jest to pustych (tri-state) bool że może być prawdą, fałszem. lub zero. (Nowa konwencja C# 3.)

Czy vb.net obsługuje dowolne konwencje takie jak ta. Z pewnością mogę zadeklarować wartość boolean w vb.net i mogę jawnie ustawić ją na Null (Nic w vb.net).

Jaka jest różnica. Jest tam więcej w nim #. Zalety?

Odpowiedz

21
  1. bool? jest tylko skrótem syntax for a nullable value type: tj Nullable<bool>
  2. W VB.NET można użyć albo jedno: Boolean? lub Nullable(Of Boolean).

Możesz napisać to tak z właściwości Podłoże:

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 

Lub po prostu użyć auto-implemented property takiego:

Public Property WillAttend As Boolean? 
+0

Dzięki za pokazanie deklarację właściwości zbyt ... które było następne pytanie. –

39

Można zadeklarować wartość pustych 3 sposoby w VB:

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

Literatura uzupełniająca: MSDN - Nullable Value Types (Visual Basic).

+13

Hej - nigdy nie wiedziałem, że możesz dodać? po nazwie zmiennej? Miły! Nauczyłem się dzisiaj czegoś nowego. – BenAlabaster

+0

Dzięki za wejście –

+1

@Seth: Dzięki za wyjście. ;-) – Kredns

0

Nullable jest używany w typach wartości, takich jak int, bools i itp., Które nie obsługują zerowych przyporządkowań. Jest to na ogół bardzo przydatne, gdy metody zwracają liczby całkowite. Jeśli wynik metody jest niepoprawny, możesz po prostu zwrócić wartość typu n ustawioną na wartość null zamiast ujemnej liczby całkowitej, co może okazać się prawidłowym wynikiem w dłuższej perspektywie. To jest jedyna korzyść, która przychodzi na myśl. Inni napisali, jak to zrobić w VB.NET. Nie będę w to wchodził.

3

Nullables są dostępne od .NET 2.0. W tej wersji Microsoft zaimplementował Generics (Nullable jest typem Generic). Od .NET 3.0 jesteś w stanie używać? również w VB.NET (wcześniej można było używać tylko Nullable (of Boolean)).

Tak jak powiedział Lucas Aardvark w .NET 3.0 są w stanie skorzystać z 3 deklaracji nullables, ale w .NET 2.0 jest tylko 1

Dim myBool as Nullable(of Boolean) 
Powiązane problemy