2009-05-07 8 views

risposta

26

E 'uno di questi:

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 

Assegnazione Nothing evento per i tipi di valore è perfettamente bene in VB.NET. E quest'ultimo è possibile solo se si specifica il vincolo New o Structure per il tipo generico.

+15

riflettore suggerisce di utilizzare il seguente (ma equivalente) Linea: Dim variabile come T = CType (Niente, T) –

+3

+1 per oscurare variabile come T = Nothing – Pondidum

+2

qualcuno dovrebbe desiderare di confermare le versioni qui, ho schiaffeggiato insieme [ codice su GitHub] (https://github.com/patridge/VB-default-tests) per confermare che i risultati sono identici per le versioni corrette. Si tratta di un'app per console ridotta con una serie di chiamate 'Debug.Assert'. Basta prendere e F5 per correre. – patridge

41

L'equivalente più vicino a default(T) è in realtà CType(Nothing, T) poiché può essere utilizzato in qualsiasi contesto che viene utilizzato default(T) (vale a dire come espressione).

+0

Non funziona per il caso 'If Not id = CType (Nothing, TId) Then ... ' –

+3

Equivalente al valore. Credo che tu voglia "Se non id non è nulla poi ...". In questo contesto non è necessario eseguire il cast del valore Nothing. – panopticoncentral

+0

MyStructInstance.Equals (ctype (nothing, TypeOfMyStruct)) funziona. '=' no – FastAl

Problemi correlati