Существует ли эквивалент C# VB6, Выбирают () функцию?
day = Choose(month,31,28,30)
Не совсем. Конечно, вы можете создать массив и использовать его индексированный получатель:
day = new[] { 31, 28, 30 }[month];
В качестве альтернативы вы можете - я бы не стал импортировать пространство имен Microsoft.VisualBasic
и сделать:
day = Interaction.Choose(month, 31, 28, 30);
Я не знаю, сколько ваш пример упрощен, но в случае, если вы действительно ищете способ найти количество дней в определенном месяце, попробуйте DateTime.DaysInMonth ()
:
day = DateTime.DaysInMonth(2008, 2);
// day == 29
Моё первое предположение будет
var days = new[] { 31, 28, 30 }[month];
Хотя собственная версия делает всевозможные сумасшедшие вещи, такие как округление и проверка границ.
Я предлагаю, вместо этого используйте DateTime.DaysInMonth
:)
Простой ответ: Нет.
Если вы хотите делать только то, что делает ваш образец, попробуйте DateTime.DaysInMonth (год, месяц)
Если на самом деле речь идет о днях в месяце, я бы последовал совету, который дали другие. Однако, если вам действительно нужна функция «Выбрать», вы можете легко создать ее самостоятельно. Например, вот так:
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
Я не стал делать первый аргумент двойным, но это легко сделать. Также можно создать неуниверсальную версию ...