是否有与VB6的Choose()函数相当的C#?

时间:2010-03-17 13:52:55

标签: c#

是否有与VB6的Choose()函数相当的C#?

day = Choose(month,31,28,30) 

5 个答案:

答案 0 :(得分:11)

不是真的。你当然可以使用索引的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 :(得分: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,但这很容易做到。也可以制作非通用版本......

答案 2 :(得分:4)

我建议您使用DateTime.DaysInMonth代替:)

答案 3 :(得分:2)

我的第一个猜测是

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

虽然native version会做各种疯狂的事情,比如舍入和类型检查。

答案 4 :(得分:1)

简单回答:不。

如果您只想做您的样本,请尝试DateTime.DaysInMonth(年,月)