12

私はステートメントswitch caseの代わりに使用しようとしていますIf Else。最初に文字列の長さをチェックし、それに従ってケースを作成する必要があります。

switch (mystring.length)
{
    case <=25:
    {
        //do this
        break;
    }
    case <50:
    {
        //do this
        break;
    }
    default:
        break;
}

これは私がやりたいことですが、<25switch caseのルールに従って適切ではないため、caseの前に配置する方法を取得できません。

4

4 に答える 4

19

特定のケースにif/elseを使用することをお勧めします。switchステートメントを使用すると、ケースに条件を設定できません。範囲をチェックしているようです。範囲が一定の場合は、次のことを試すことができます(switchステートメントを使用する場合)

int Length = mystring.Length;
int range = (Length - 1) / 25;
switch (range)
{
    case 0:
        Console.WriteLine("Range between 0 to 25");
        break;
    case 1:
        Console.WriteLine("Range between 26 to 50");
        break;
    case 2:
        Console.WriteLine("Range between 51 to 75");
        break;

}
于 2012-12-18T07:03:55.710 に答える
9

これは実際にはOPにはあまり役立ちませんが、将来これを探している人に役立つことを願っています。

C#7(Visual Studio 2017で使用可能)を使用している場合はswitch、範囲を指定できます。

例:

switch (mystring.length)
{
    case int n when (n >= 0 && n <= 25):
    //do this
    break;

    case int n when (n >= 26 && n <= 50 ):
    //do this
    break;
}
于 2017-05-29T14:56:46.817 に答える
2

これを行うことはできませんswitchが、回避策がある可能性があります。

Dictionary<int, Action> actions = new Dictionary<int, Action>()
    {
        {25,()=>Console.WriteLine("<25")},
        {49,()=>Console.WriteLine("<50")},
        {int.MaxValue,()=>Console.WriteLine("Default")},
    };


actions.First(kv => mystring.length < kv.Key).Value();
于 2012-12-18T07:01:21.497 に答える
2

これを試して:

int range = (int) Math.Floor(mystring.Length / 25);

switch (range) {
case 0:

    //do this <= 25
    break;

case 1:

    //do this < 50 & > 25
    break;

default:
    break;
}​
于 2012-12-18T07:14:34.417 に答える