2009-08-04 23 views
8

Tôi đang làm việc thông qua cuốn sách MVC mới của tôi và tất nhiên, các mẫu là tất cả trong C# như bình thường.Có một điều như một bool nullable trong vb.net

Có một dòng mã mà nói

public bool? WillAttend { get; set; } 

Tác giả giải thích rằng dấu hỏi chỉ ra rằng đây là một nullable (tri-state) bool có thể là đúng, sai. hoặc null. (Một quy ước C# 3 mới.)

Vb.net có hỗ trợ bất kỳ quy ước nào như thế này không. Chắc chắn tôi có thể khai báo một boolean trong vb.net và tôi có thể đặt nó thành Null (Nothing in vb.net) một cách rõ ràng.

Sự khác biệt là gì. IS có nhiều hơn để nó trong C#. Ưu điểm?

Trả lời

21
  1. bool? chỉ là viết tắt syntax for a nullable value type: ví dụ: Nullable<bool>
  2. Trong VB.NET bạn có thể sử dụng một trong hai: Boolean? hoặc Nullable(Of Boolean).

Bạn có thể viết nó như thế này với một tài sản ủng hộ:

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 

Hoặc chỉ cần sử dụng một auto-implemented property như thế này:

Public Property WillAttend As Boolean? 
+0

Cám ơn cho thấy việc kê khai tài sản quá ... mà có thể đã là câu hỏi tiếp theo. –

39

Bạn có thể khai báo một giá trị nullable 3 cách trong VB:

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

Đọc thêm: MSDN - Nullable Value Types (Visual Basic).

+13

Hey - Tôi không bao giờ biết bạn có thể thêm? sau tên biến? Tốt đẹp! Tôi đã học được một cái gì đó mới ngày hôm nay. – BenAlabaster

+0

Cảm ơn bạn đã nhập –

+1

@Seth: Cảm ơn bạn đã xuất. ;-) – Kredns

0

Nullable được sử dụng được sử dụng trên các loại giá trị như ints, bools và vv không hỗ trợ gán null. Điều này thường rất tiện dụng khi bạn trả về các số nguyên. Nếu kết quả của một phương thức không hợp lệ, bạn có thể trả về một giá trị rỗng được đặt thành null thay vì một số nguyên âm, có thể kết quả là một kết quả hợp lệ trong thời gian dài. Đó là khá nhiều lợi thế duy nhất mà đến với tâm trí. Những người khác đã đăng làm thế nào để làm điều này trong VB.NET. Tôi sẽ không đi vào đó.

3

Nullables có sẵn từ .NET 2.0. Trong phiên bản đó, Microsoft đã triển khai Generics (Nullable là kiểu Generic). Kể từ .NET 3.0 bạn có thể sử dụng? trong VB.NET cũng vậy (trước đây bạn chỉ có thể sử dụng Nullable (của Boolean)).

Vì vậy, như đã nói bởi Lucas Aardvark trong .NET 3.0 bạn có thể sử dụng 3 tờ khai của nullables, nhưng trong .NET 2.0 chỉ 1 là

Dim myBool as Nullable(of Boolean) 
Các vấn đề liên quan