在c#的大小写切换中返回一个数组

本文关键字:数组 一个 返回 大小写 | 更新日期: 2023-09-27 17:52:54

我试图返回具有特定情况下日期[sStartMonth, sStartDay, sStartYear]的数组,例如:case: "Today"将返回{"June", "3", "2015"}

我正在尝试这样做,但失败了:

public static string[] SetStartDate(string sStartDateFilter)
    {
        switch (sStartDateFilter)
        {
            case "Today":
                DateTime currentDate = DateTime.Now;
                string sStartMonth = currentDate.ToString("MMMM");
                string sStartDay = currentDate.Day.ToString();
                string sStartYear = currentDate.Year.ToString();
                return {sStartMonth, sStartDay, sStartYear};               
        }
    }

在c#的大小写切换中返回一个数组

要内联构造数组,您需要完整的语法,只有在显式声明数组并在同一语句中为其提供值时才允许使用简写语法。

所以这就是你想要的:

return new[] { sStartMonth, sStartDay, sStartYear };

类似于

    switch (sStartDateFilter)
    {
        case "Today":
           return new[] { sStartMonth, sStartDay, sStartYear };
        default:
           // return something here or throw

您将需要为默认情况返回一些东西,或者抛出new ArgumentOutOfRangeException("sStartDateFilter"),否则您将获得编译器错误,因为并非所有路径都将返回值。

@Lasse V. Karlsen的答案与我的潜在答案结合起来:

public static string[] GetStartDate(string sStartDateFilter)
{
    DateTime currentDate = DateTime.Now;
    switch (sStartDateFilter)
    {
        case "Today":
            return new string[]{ currentDate.ToString("MMMM"), currentDate.Day.ToString(), currentDate.Year.ToString()};
        case "Tomorrow":
            currentDate.AddDays(1);
            return new string[]{ currentDate.ToString("MMMM"), currentDate.Day.ToString(), currentDate.Year.ToString()};
        case "Yesterday":
            currentDate.AddDays(-1);
            return new string[]{ currentDate.ToString("MMMM"), currentDate.Day.ToString(), currentDate.Year.ToString()};
        default:
            // all other cases
    }
}


编辑:

我知道,我应该把return new string[]{ currentDate.ToString("MMMM"), currentDate.Day.ToString(), currentDate.Year.ToString()};行移动到一个单独的函数中,但这只是一个简单的例子