unity español enum c# .net enums

español - enum string c#



¿Cuál es el valor predeterminado para la variable enum (2)

Una variable de enumeración, ¿alguien sabe si siempre está por defecto al primer elemento?


Creo que es bastante peligroso confiar en el orden de los valores en una enumeración y suponer que el primero es siempre el predeterminado. Esta sería una buena práctica si le preocupa proteger el valor predeterminado.

enum E { Foo = 0, Bar, Baz, Quux }

De lo contrario, todo lo que necesita es un refactor descuidado del pedido y tendrá un valor predeterminado completamente diferente.


Es cualquier miembro de la enumeración que representa el valor 0 . En concreto, a partir de la documentation :

El valor predeterminado de una enum E es el valor producido por la expresión (E)0 .

Como ejemplo, tome la siguiente enumeración:

enum E { Foo, Bar, Baz, Quux }

Sin anular los valores predeterminados, el default(E) impresión default(E) devuelve Foo ya que es el primer elemento que ocurre.

Sin embargo, no siempre es el caso que 0 de una enumeración esté representada por el primer miembro. Por ejemplo, si haces esto:

enum F { // Give each element a custom value Foo = 1, Bar = 2, Baz = 3, Quux = 0 }

La impresión default(F) le dará Quux , no Foo .

Si ninguno de los elementos en una enumeración G corresponde a 0 :

enum G { Foo = 1, Bar = 2, Baz = 3, Quux = 4 }

default(G) devuelve literalmente 0 , aunque su tipo permanece como G (según lo citado por los documentos anteriores, una conversión al tipo de enumeración dado).