2009-05-07 10 views

Respuesta

26

Es alguna de estas:

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 

Asignación Nothing caso de los tipos de valor está perfectamente bien en VB.NET. Y lo último solo es posible si especifica New o Structure restricción para el tipo genérico.

+15

reflector sugiere el uso de los siguientes (pero equivalente) de línea: variables Dim como T = CType (Nada, T) –

+3

1 en Dim variable como T = Nada – Pondidum

+2

Si alguien desea confirmar las versiones aquí, me dio una palmada en conjunto [ algún código en GitHub] (https://github.com/patridge/VB-default-tests) para confirmar que los resultados son idénticos para las versiones correctas. Es una aplicación de consola simplificada con un montón de llamadas 'Debug.Assert'. Solo toma y F5 para correr. – patridge

41

El equivalente más cercano a default(T) es realmente CType(Nothing, T) ya que se puede usar en cualquier contexto que se use default(T) (es decir, como una expresión).

+0

No funciona para el caso 'If Not id = CType (Nothing, TId) Then ...' –

+3

Eso es igualdad de valor. Creo que quieres 'If Not id is nothing then ...'. En este contexto, no necesita lanzar el valor Nothing. – panopticoncentral

+0

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

Cuestiones relacionadas