2010-03-17 3 views

ответ

10

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

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

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

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

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

day = DateTime.DaysInMonth(2008, 2); 
// day == 29 
1

Моя первая догадка будет

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

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

1

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

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

5

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

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 

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

+0

хорошее решение. Спасибо. – Mike

Смежные вопросы