Перечисления C# и кастинг

Вы пытались вызвать $('#datetimepicker8').datetimepicker() внутри модального всплывающего события show.bs.modal. Я предполагаю, что вы привязываете datepicker к документу или загрузке страницы. Вам нужно привязать его, когда появится модальное всплывающее окно

7
задан JaredPar 11 March 2009 в 03:00
поделиться

4 ответа

Каков тип somevalue? Если тип является кастингом MyEnum, является ненужным и должен работать без ошибки.

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

switch( (MyEnum)somevalue )  {
  case MyEnum.Value1: ...
}
15
ответ дан 6 December 2019 в 08:17
поделиться

Очевидно, somevalue является целым числом, а не явно введенный как Ваше перечисление. Необходимо иметь в виду, что базовое значение перечисления является просто "типом хранения" и не является неявно взаимозаменяемым. Однако можно легко использовать оператор броска для создания кода простым и более безопасным с точки зрения типов:

private enum MyEnum { Value1, Value2, Value3 }

switch ((MyEnum)somevalue)
{
    case MyEnum.Value1:
        someothervar = "ss";
        break;
    case MyEnum.Value2:
        someothervar = "yy";
        break;
    case MyEnum.Value3:
        someothervar = "gg";
        break;
    default:
        throw new NotSupportedException();
}

В конечном счете Вы хотели бы дизайн, где Вы не должны были преобразовывать от целого числа до перечисления, но часто времена при чтении из диска или DB дело обстоит не так.

4
ответ дан 6 December 2019 в 08:17
поделиться

Если somevalue имеет тип MyEnum, Вы не должны бросать к int.

public enum Color
{
    Red,
    Blue,
    Green
}

class Program
{
    static void Main(string[] args)
    {
        Color color = Color.Red;

        switch (color)
        {
            case Color.Red:
                break;

            case Color.Blue:
                break;

            case Color.Green:
                break;
        }
    }
}
2
ответ дан 6 December 2019 в 08:17
поделиться

Поскольку другие сказали:

  • Если somevalue имеет тип MyEnum, Вам не придется бросить.
  • Если Вы читаете из базы данных или текстового файла, можно хотеть использовать метод Синтаксического анализа перечисления, получить перечисление значений от строки.
  • Если абсолютно необходимо сравнить интервал, более эффективно бросить в переключателе в MyEnum, вместо того, чтобы бросить каждое значение MyEnum к интервалу.
1
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: