Всегда ли я использую enum или я делаю что-то не так? - PullRequest
2 голосов
/ 28 июля 2010

если у меня очень простое перечисление целых чисел, как это.

  enum alignment { left, center, right}

Где я хочу, чтобы тип данных был int, который, как я понимаю, является значением по умолчанию, а значения должны быть оставлены = 0, центр = 1, справа = 2.

Но если я попытаюсь использовать значение из перечисления, например

header.Alignment = alignment.center;

Мне сказали, что мне нужно привести alignment.center к int. это не страшно, но мне интересно, делаю ли я что-то не так или это просто способ перечисления.

Ответы [ 4 ]

8 голосов
/ 28 июля 2010

, если header.Alignment имеет тип int, тогда да, вы всегда должны приводить к int.

. Вы можете сделать header.Alignment типа alignment, и тогда вы 'Я никогда не буду кастовать.Если вы имеете дело с устаревшим или сторонним кодом, который принимает только int, то вам не повезло.

5 голосов
/ 28 июля 2010

Если свойство header.Alignment является целым числом, вам необходимо его разыграть.

Тем не менее, было бы, вероятно, более разумно изменить свойство Alignment, чтобы оно действительно имело тип Alignment. Тогда вам не понадобится приводить при установке, и у вас все равно будет доступ к целочисленному значению, если оно вам когда-либо понадобилось.

3 голосов
/ 28 июля 2010

Резервное хранилище enum - это int, но вы не можете легко использовать его как int. Идея перечисления состоит в том, чтобы иметь строго типизированную коллекцию констант, чтобы вы могли использовать их в качестве, скажем, значения выравнивания. когда вы используете его как int, вы бросаете эту сильную печать в окно. Вам следует изменить свойство Alignment вашего заголовка, чтобы оно имело тип Alignment, а не int.

0 голосов
/ 29 июля 2010

Да.Для преобразования из типа enum (выравнивание) в целочисленный тип .

требуется явное приведение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...