135 votos

Número Total de elementos definidos en el enum

¿Cómo puedo obtener el número de elementos definidos en el enum?

177voto

Kasper Holdum Puntos 4173

Usted puede utilizar el método estático Enum.GetNames , que devuelve una matriz que representa los nombres de todos los elementos de la enumeración. La longitud de la propiedad de esta matriz es igual al número de elementos definidos en el enum

var myEnumMemberCount = Enum.GetNames(typeof(MyEnum)).Length;

69voto

Timothy Shields Puntos 17970

¿Cómo puedo obtener el número de elementos definidos en el enum?

El número de elementos que puede significar dos cosas.

enum MyEnum
{
    A = 1,
    B = 2,
    C = 1,
    D = 3,
    E = 2
}

Cómo muchos de los elementos que hace MyEnum ? Cinco o tres?


El primero - el número de nombres - puede ser obtenido como este:

var namesCount = Enum.GetNames(typeof(MyEnum))
                     .Length;

El segundo - el número de valores - puede ser obtenido como este:

var valuesCount = Enum.GetValues(typeof(MyEnum))
                      .Cast<MyEnum>()
                      .Distinct()
                      .Count();

65voto

Matt Hamilton Puntos 98268

Enum.GetNames(typeof(MyEnum)).De longitud;

5voto

jvanderh Puntos 1845

De las respuestas anteriores sólo la adición de código de ejemplo.

 class Program
    {
        static void Main(string[] args)
        {
            int enumlen = Enum.GetNames(typeof(myenum)).Length;
            Console.Write(enumlen);
            Console.Read();
        }
        public enum myenum
        {
            value1,
            value2
        }
    }

5voto

Lucas Willett Puntos 331

Puedes usar Enum.GetNames para devolver un IEnumerable de valores en su enumeración y, a continuación,.Recuento de la resultante IEnumerable.

GetNames produce el mismo resultado que GetValues, pero es más rápido.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X