Существует ли эквивалент C# VB6, Выбирают () функцию?

Существует ли эквивалент C# VB6, Выбирают () функцию?

day = Choose(month,31,28,30) 
5
задан Mike 17 March 2010 в 13:52
поделиться

5 ответов

Не совсем. Конечно, вы можете создать массив и использовать его индексированный получатель:

day = new[] { 31, 28, 30 }[month];

В качестве альтернативы вы можете - я бы не стал импортировать пространство имен Microsoft.VisualBasic и сделать:

day = Interaction.Choose(month, 31, 28, 30);

Я не знаю, сколько ваш пример упрощен, но в случае, если вы действительно ищете способ найти количество дней в определенном месяце, попробуйте DateTime.DaysInMonth () :

day = DateTime.DaysInMonth(2008, 2);
// day == 29
12
ответ дан 18 December 2019 в 06:34
поделиться

Моё первое предположение будет

var days = new[] { 31, 28, 30 }[month];

Хотя собственная версия делает всевозможные сумасшедшие вещи, такие как округление и проверка границ.

2
ответ дан 18 December 2019 в 06:34
поделиться

Я предлагаю, вместо этого используйте DateTime.DaysInMonth :)

4
ответ дан 18 December 2019 в 06:34
поделиться

Простой ответ: Нет.

Если вы хотите делать только то, что делает ваш образец, попробуйте DateTime.DaysInMonth (год, месяц)

1
ответ дан 18 December 2019 в 06:34
поделиться

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

public static T Choose<T>(int index, params T[] args)
{
    if (index < 1 || index > args.Length)
    {
        return default(T);
    }
    else
    {
        return args[--index];
    }
}

// call it like this
var day = Choose<int?>(1, 30, 28, 29);  // returns 30

Я не стал делать первый аргумент двойным, но это легко сделать. Также можно создать неуниверсальную версию ...

5
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

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