Pregunta

Saludos,

Soy un principiante a OO y programación y tengo la siguiente situación:

Tengo un conjunto de valores const y enumeraciones que varias de las clases I a cumplir la cuota.

Estas clases son independientes, es decir que no sea compartir estos valores, que no interactúan entre sí, por lo que hereda ellos no funcionarán.

Me preguntaba; Si creo una clase vacía con sólo estos consts y enumeraciones y luego declarar un objeto de estas clases en cada clase, entonces podría utilizar estos valores como:

globals.enum.enummember?

¿Es esta la programación de sonido o hay una mejor manera de hacer esto?

Gracias por su tiempo.

¿Fue útil?

Solución

La mejor práctica es simplemente declarar las enumeraciones junto con sus clases, no anidados en una clase. En realidad, tipos anidados son por lo general una mala idea, a menos que sean privadas. Hay excepciones, por supuesto, pero en su mayor parte que están mejor sin anidación.

Las constantes tienen que ser definidas en una clase, pero no es necesario crear una instancia de un objeto de la clase para usarlos. También pueden ser públicos, por lo que no es necesario para heredar nada. Si se piensa en ello lo suficiente, usted debería ser capaz de averiguar un buen nombre para la clase que contiene estas constantes.

La práctica demuestra que las constantes y enumeraciones rara vez son simplemente mundial. La mayoría de las veces están estrechamente acoplados con una o pocas clases. A continuación, debe definir estas constantes como parte de la clase correspondiente y poner las enumeraciones en el mismo espacio de nombres como la clase de usarlos.

Otros consejos

Puede utilizar la clase estática con los miembros estáticos para lograr el comportamiento deseado:

namespace A {
    public static class Enum1 {
       public static readonly int EnumMember1 = 1;
       public static readonly int EnumMember2 = 2;
       public static readonly int EnumMember3 = 3;
    }
}

Debe utilizar esta de la siguiente manera:

int x = A.Enum1.EnumMember2;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top