2010-03-17 45 views

回答

10

不是。當然,你可以創建一個數組的使用其索引的getter:

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 

我沒有打算讓第一個參數成爲double,但是這可以很容易地完成。也可以製作非通用版...

+0

不錯的解決方案。謝謝。 – Mike 2010-03-17 14:50:46

相關問題