Вопрос

Привет,

Я новичок в объектно-ориентированном программировании и у меня следующая ситуация:

У меня есть набор константных значений и перечислений, которые используются несколькими классами, которые я реализую.

Эти классы независимы, т.е.кроме совместного использования этих значений, они не взаимодействуют друг с другом, поэтому их наследование не сработает.

Я размышлял;Если я создам пустой класс только с этими константами и перечислениями, а затем объявлю объект этого класса в каждом классе, то я мог бы использовать эти значения, например:

globals.enum.enummember?

Это звуковое программирование или есть лучший способ сделать это?

Спасибо за ваше время.

Это было полезно?

Решение

Лучше всего просто объявлять перечисления рядом с вашими классами, а не вкладывать их в класс.На самом деле вложенные типы обычно являются плохой идеей, если только они не являются частными.Конечно, есть исключения, но в большинстве случаев лучше обойтись без вложенности.

Константы должны быть определены в классе, но вам не нужно создавать экземпляр объекта класса, чтобы их использовать.Также они могут быть общедоступными, поэтому вам не нужно ничего наследовать.Если вы хорошенько подумаете об этом, то сможете придумать подходящее имя для класса, содержащего эти константы.

Практика показывает, что константы и перечисления редко бывают просто глобальными.Большую часть времени они тесно связаны с одним или несколькими классами.Затем вам следует определить эти константы как часть соответствующего класса и поместить перечисления в то же пространство имен, что и класс, использующий их.

Другие советы

Вы можете использовать статический класс со статическими членами для достижения желаемого поведения:

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

Вы должны использовать это следующим образом:

int x = A.Enum1.EnumMember2;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top