En teoría, podría usar int64 como su tipo de base en la enumeración y obtener 2^63 entradas posibles. Otros te han dado excelentes respuestas sobre esto.
Creo que hay una segunda pregunta implícita de si utiliza una enumeración para algo con una gran cantidad de elementos. Esto se aplica directamente a su proyecto de muchas maneras.
Una de las mayores consideraciones sería la mantenibilidad a largo plazo. ¿Cree que la empresa alguna vez cambiará la lista de valores que está utilizando? Si es así, ¿debe haber compatibilidad con versiones anteriores de listas anteriores? ¿Qué tan significativo podría ser este problema? En general, cuanto mayor sea el número de miembros en una enumeración se correlaciona con una mayor probabilidad de que la lista deba ser modificada en una fecha futura.
Las enumeraciones son geniales para muchas cosas. Son limpios, rápidos y simples de implementar. Funcionan muy bien con IntelliSense y facilitan el trabajo del siguiente programador, especialmente si los nombres son claros, concisos y, si es necesario, bien documentados.
El problema es que una enumeración también presenta inconvenientes. Pueden ser problemáticos si alguna vez necesitan ser cambiados, especialmente si las clases que los usan se están conservando.
En la mayoría de los casos, las enumeraciones se conservan en el almacenamiento como sus valores subyacentes, no como sus nombres descriptivos.
enum InsuranceClass
{
Home, //value = 0 (int32)
Vehicle, //value = 1 (int32)
Life, //value = 2 (int32)
Health //value = 3 (int32)
}
En este ejemplo, el valor InsuranceClass.Life
conseguiría persistido como un número 2.
Si otro programador hace un pequeño cambio en el sistema y se suma a la enumeración de mascotas como esto;
enum InsuranceClass
{
Home, //value = 0 (int32)
Vehicle, //value = 1 (int32)
Pet, //value = 2 (int32)
Life, //value = 3 (int32)
Health //value = 4 (int32)
}
Todos los datos que salen del almacenamiento mostrará ahora la vida políticas como mascotas políticas. Este es un error extremadamente fácil de hacer y puede introducir errores que son difíciles de rastrear.
El segundo problema importante con las enumeraciones es que cada cambio de datos requerirá que reconstruya y vuelva a implementar su programa. Esto puede causar diferentes grados de dolor. En un servidor web que puede no ser un gran problema, pero si se trata de una aplicación utilizada en sistemas de escritorio 5000, tiene un costo completamente diferente para volver a implementar su cambio de lista menor.
Si es probable que su lista cambie periódicamente, debería considerar un sistema que almacene esa lista de alguna otra forma, muy probablemente fuera de su código. Las bases de datos se diseñaron específicamente para este escenario o incluso se podría usar un archivo de configuración simple (no la solución preferida). La planificación inteligente de los cambios puede reducir o evitar los problemas asociados con la reconstrucción y la reubicación de su software.
Esto no es una sugerencia para optimizar prematuramente su sistema para la posibilidad de cambio, pero más una sugerencia para estructurar el código para que un posible cambio en el futuro no cree un problema importante. Diferentes situaciones requerirán decisiones de diferencia.
Aquí están mis reglas generales para el uso de enumeraciones;
- Úselos para clasificar y definir otros datos, pero no como datos . Para ser más claros, usaría
InsuranceClass.Life
a para determinar cómo deberían usarse los demás datos de una clase, pero no haría que el valor subyacente de {pseudocode} InsuranceClass.Life = $653.00
y no utilice el valor en sí en los cálculos. Los mensajes no son constantes. Hacer crea confusión.
- Use las enumeraciones cuando la lista de enumeración no es probable que cambie. Las entradas son geniales para conceptos fundamentales pero deficientes para cambiar constantemente de ideas. Cuando crea una enumeración, este es un contrato con los programadores futuros que desea evitar romper.
- Si debe cambiar una enumeración, luego tiene una regla que todos siguen que agrega al final, no al medio. La alternativa es que defina valores específicos para cada enumeración y nunca los cambie. El punto es que es poco probable que sepa cómo otros están utilizando sus enumeraciones subyacentes valores y cambiarlos puede causar sufrimiento para cualquier otra persona que use su código . Este es un orden de magnitud más importante para cualquier sistema que persista datos.
- El corolario de # 2 y # 3 es nunca eliminar un miembro de una enumeración. Existen círculos específicos del infierno para los programadores que hacen esto en una base de código utilizada por otros.
Esperemos que haya ampliado las respuestas de manera útil.
Solo tengo curiosidad por lo que estás haciendo que necesitaría tantas constantes para tener que hacer esta pregunta ... – NotDan
Bueno, por supuesto, no usaré el límite de tamaño de 2^32, pero necesito mucho "almacenamiento" . Estamos desarrollando una aplicación que está relacionada con los seguros, por lo que hay muchas variables que deben estar presentes para poder obtener una calificación superior y, como se puede imaginar, son muchas (probablemente de 600 a 1,000) –