Pergunta

Saudações,

Eu sou um novato para OO e programação e eu tenho a seguinte situação:

Eu tenho um conjunto de valores const e enums que várias das classes I implementar ação.

Essas classes são independentes ou seja, diferente de compartilhar esses valores, eles não interagem uns com os outros, então herdar-los não vai funcionar.

Eu estava pensando; Se eu criar uma classe vazia com apenas esses consts e enums e, em seguida, declarar um objeto destes classe em cada classe, em seguida, eu poderia usar esses valores como:

globals.enum.enummember?

É este programação de som ou há uma maneira melhor de fazer isso?

Obrigado pelo seu tempo.

Foi útil?

Solução

A melhor prática é simplesmente declarar os enums junto com suas classes, não aninhados em uma classe. Na verdade, tipos aninhados são geralmente uma má idéia, a menos que eles são privados. Há exceções, é claro, mas na maior parte você está melhor sem nidificação.

Constantes tem que ser definido em uma classe, mas você não precisa instanciar um objeto da classe para usá-los. Também podem ser públicas, para que você não precisa de nada herdar. Se você pensar sobre isso com força suficiente, você deve ser capaz de descobrir um bom nome para a classe que contém essas constantes.

mostra a prática que constantes e enumerações raramente são simplesmente global. Na maioria das vezes eles estão intimamente juntamente com uma ou poucas classes. Você deve então definir essas constantes como uma parte da classe apropriada e colocar enums no mesmo namespace como a classe de usá-los.

Outras dicas

Você pode usar classe estática com membros estáticos para alcançar o comportamento desejado:

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

Você deve usar isso da seguinte forma:

int x = A.Enum1.EnumMember2;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top