2008-11-16 19 views
6

Me preguntaba si hay alguna diferencia entre los dos nuevos iniciadores de objetos nuevos o si es solo azúcar sintáctica.Nuevo {objeto} vs {objeto} = nuevo {objeto}

Así es:

Dim _StreamReader as New Streamreader(mystream) 

y diferente a:

Dim _StreamReader as Streamreader = new streamreader(mystream) 

¿Hay alguna diferencia bajo el capó? o son los dos iguales? ¿Cuál prefiere usar?

Respuesta

14

En VB.NET, son idénticos. La variante As New es canónica.

En VB6, su semántica en realidad difería (aparte del hecho obvio de que VB6 no permitía asignaciones en las declaraciones): la variante As New crearía un objeto que nunca podría ser Nothing. Más bien, el tiempo de ejecución garantizaría que el objeto siempre se inicializara correctamente antes de cada acceso a él.

1

No soy un tipo VB, pero hasta donde puedo decir que son equivalentes. De acuerdo con MSDN's description of the Dim statement:

Si no se especifica el tipo de datos, la variable toma el tipo de datos de inicializador. Si no está presente ni el tipo de datos ni el inicializador , de forma predeterminada, , el tipo de datos es Tipo de datos de objeto. Si especifica el tipo de datos y el inicializador , el tipo de datos del inicializador debe ser convertible al tipo de datos .

No pasaré el comentario sobre preferencia, ya que no utilizo VB (excepto cuando respondo declaraciones).

2

Estas declaraciones son idénticas. Personalmente prefiero la sintaxis "Dim x como nuevo" porque es más conciso. No hay ninguna razón para escribir el mismo nombre de tipo en la misma declaración cuando no hace una diferencia programática. Todo lo que hace es hacerte pasar más tiempo en el teclado :)

Cuestiones relacionadas