3

if-else句を12回使用せずにこのタスクを実行するための最良の方法は何ですか。タスクはこれです:

if(mon=="1")
{
 month="JAN";
}
else if(mon=="2")
{
 month="FEB";
}

等々..

4

5 に答える 5

14

このコードを使用してみてください

using System.Globalization;

var month = 7;
var dtf = CultureInfo.CurrentCulture.DateTimeFormat;
string monthName = dtf.GetMonthName(month);
string abbreviatedMonthName = dtf.GetAbbreviatedMonthName(month);
于 2012-09-25T05:04:58.280 に答える
2

これに代わる方法は、配列を使用することです。

string[] months = new string[]{"JAN", "FEB", "MAR",..., "DEC"};
string month = months[value - 1];

-1インデックスはゼロから始まるからです。

また

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(1)
于 2012-09-25T04:58:40.550 に答える
2
using System.Globalization;
CultureInfo.CurrentCulture.DateTimeFormat.AbbreviatedMonthNames[int.Parse(mon)-1];
于 2012-09-25T05:13:35.963 に答える
1

Switch-Caseを使用する:

switch(mon)
{
    case "1":
            month = "JAN";
            break;
    case "2":
            month = "FEB";
            break;
    default:
            month = string.Empty; // OR throw exception
            break;
}
于 2012-09-25T05:00:24.687 に答える
1

別のオプション:

switch (int.parse(mon))
{
    case 1: return "JAN";
    case 2: return "FEB";
    //...
    case 12: return "DEC";
    default: return "???";
}

// Azodious notes that switches work on strings too, so you can also do:
switch (mon)
{
    case "1": return "JAN";
    case "2": return "FEB";
    //...
    case "12": return "DEC";
    default: return "???";
}

または、John Wooが示したものと同様に、配列へのインデックスとして(ただし、最初に解析する必要がありますmonint

于 2012-09-25T05:00:54.143 に答える