2010-05-25 20 views

Respuesta

7

Creo que el valor predeterminado es 0, por lo tanto, se generará un HardwareInterfaceType no válido. Personalmente, no me gusta este tipo de codificación para enumeraciones. IMO es más claro definir un valor Enum de "Indefinido" o "Ninguno" y luego inicializar la variable a eso.

Una de las "compras" con enumeraciones es que se pueden inicializar a un valor que no existe en la enumeración. El programador original podría haber pensado que la enumeración se inicializaría con algún valor válido en la definición de Enum si usara la palabra clave "predeterminada". No es cierto, y la OMI no es un buen uso de la palabra clave "predeterminada" en absoluto.

var foobar = default(HardwareInterfaceType); 
Console.WriteLine(Enum.IsDefined(typeof(HardwareInterfaceType), foobar)); //returns false 
Console.WriteLine(foobar); //returns 0 
+0

+1 para el valor "Indefinido" – Christian

4

palabra clave predeterminada se utiliza principalmente al escribir código genérico.

En clases y métodos genéricos, una cuestión que surge es cómo asignar un valor predeterminado a un tipo parametrizado T cuando no se sabe si T será un tipo de referencia o un tipo de valor y si T es un tipo de valor, si será un valor numérico o una estructura.

En su caso se asigna 0.

static void Main(string[] args) 
    { 

     HardwareInterfaceType type = default(HardwareInterfaceType); 
     Console.WriteLine(type.ToString()); 

     type = HardwareInterfaceType.Gpib; 
     Console.WriteLine(type.ToString()); 

     Console.ReadLine(); 
    } 

    public enum HardwareInterfaceType 
    { 
     Gpib = 1, 
     Vxi = 2, 
     GpibVxi = 3, 
    } 

    //output 
    0 
    Gpib 
+0

en mi caso, ¿qué es lo que asigna? –

+1

En su caso, asigna 0. –

5

default suministrará el valor predeterminado para un tipo de lenguaje - en el caso de valores numéricos y, por extensión, las enumeraciones, cero. para los tipos de referencia, el valor predeterminado sería null.

Es más comúnmente utilizado con genéricos donde el tipo no se conoce por adelantado.

2

Creo que la palabra clave por defecto se utiliza cuando no se tiene que crear una nueva instancia de un objeto de clase dicen:

una forma es como la de esta manera

HardwareInterfaceType type = new HardwareInterfaceType(); 

y segundo es así también

HardwareInterfaceType type = default(HardwareInterfaceType); 

El código anterior creará el objeto de hardwareinterfacetype pero no creará e cualquier nueva memoria .

Cuestiones relacionadas