Почему Enum должен использовать CType? - PullRequest
0 голосов
/ 24 марта 2011

В vb.net я получил Enum, определенный как Integer:

    Enum enUtilityTypeDetailStudentEntryWorkflow As Integer
        enUTDSEW_Default = 379
        enUTDSEW_ApplicantRecordBook = 380
    End Enum

Я хотел бы присвоить Enum непосредственно переменной, но он не работает.

        EntryWorkflowLookUpEdit.EditValue = enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default

В итоге я использовал CType и преобразовал его в Integer.

        EntryWorkflowLookUpEdit.EditValue = CType(enUtilityTypeDetailStudentEntryWorkflow.enUTDSEW_Default, Integer)

Это работает, но добавляет много шума в код, и кажется, что Enum уже определен как Integer, что заставляет меня задуматься, почему я должен назначить его снова?

Есть ли другие способы сделать это без шума?Я знаю, что что-то здесь упущено.

Спасибо большое.

1 Ответ

3 голосов
/ 24 марта 2011

Перечисление определяется как использование целого числа в качестве базового типа.

Это хорошая вещь , что это явное преобразование IMO, потому что это означает, что вы не случайно в конечном итоге используете значение enum, где вы действительно имели в виду просто использовать прямое целое число. Смысл перечислений в том, чтобы эффективно иметь разные «представления» чисел - и изменение того, «какое представление» вы используете, должно быть явным.

Я ожидаю, что будет относительно таких преобразований в большинстве кодовых баз.

Если это станет для вас серьезной проблемой, вы всегда можете написать метод расширения ToInt32 или что-то в этом роде, который только что выполнил приведение.

Лично, если бы я пытался уменьшить шум в этом коде, я бы попытался найти более короткое имя, чем enUtilityTypeDetailStudentEntryWorkflow - и в то же время соответствующее соглашению об именах .NET.

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