2009-05-07 25 views

Trả lời

26

Đó là bất kỳ những:

Dim variable As T 
Dim variable As T = Nothing 
Dim variable As New T() 
Dim variable As T = CType(Nothing, T) 'this is suggested by reflector 

Gán Nothing sự kiện để các loại giá trị là hoàn toàn tốt đẹp trong VB.NET. Và điều sau chỉ có thể xảy ra nếu bạn chỉ định một trong hai giới hạn New hoặc Structure cho loại chung.

+15

Phản ánh đề xuất sử dụng dòng sau (nhưng tương đương): Biến Dim Khi T = CType (Không có gì, T) –

+3

+1 đến biến Dim là T = Không có gì – Pondidum

+2

Nếu ai muốn xác nhận phiên bản ở đây, tôi tát cùng nhau [ một số mã trên GitHub] (https://github.com/patridge/VB-default-tests) để xác nhận kết quả giống hệt nhau cho các phiên bản chính xác. Đó là một ứng dụng giao diện điều khiển được gỡ xuống với một loạt các cuộc gọi 'Debug.Assert'. Chỉ cần lấy và F5 để chạy. – patridge

41

Tương đương gần nhất với default(T) thực sự là CType(Nothing, T) vì nó có thể được sử dụng trong bất kỳ ngữ cảnh nào mà default(T) được sử dụng (tức là biểu thức).

+0

Không hoạt động cho trường hợp 'Nếu không id = CType (Không có gì, TId) Sau đó ...' –

+3

Đó là giá trị bình đẳng. Tôi tin rằng bạn muốn 'Nếu không id là không có gì Sau đó ...'. Trong bối cảnh này, bạn không cần phải bỏ giá trị Không có gì. – panopticoncentral

+0

MyStructInstance.Equals (ctype (không có gì, TypeOfMyStruct)) hoạt động. '=' không – FastAl

Các vấn đề liên quan