3

switchステートメントに複数の条件を追加できません。switchステートメントを使用してこれを行う方法は?複数のif条件を使用する必要がありますか?

string oldValue = ".....long string1....";
string newValue = ".....long string2....";
switch (oldValue.Length && newValue.Length)
{
    case <500 && <500:
        //insert as is
        break;
    case >500 && <500:
        //split oldValue into array of strings and insert each
        //insert newValue as is
        break;
    case <500 && >500:
        //insert oldValue As is
        //split newValue into array of strings and insert each
        break;
    case >500 && >500:
        //split oldValue into array of strings and insert each
        //split newValue into array of strings and insert each
        break;
    default:
        break;
}
4

4 に答える 4

5

いいえ、これはできません。switchステートメントは、式ではなく値に対してテストします。

if代わりにステートメントを使用する必要があります。

于 2012-10-18T07:57:09.613 に答える
3

コメントを見ると、の長さはoldValueあなたがすることだけに影響しoldValue、の長さはnewValueあなたがすることだけに影響しますnewValue

これを2つの別々のステートメントに分割してみませんか?または一般的な方法にさえ?

string[] GetValuesToInsert(String input)
{
    if (input.Length < 500)
        return new[] {input};
    else
        return input.Split(...);
}

whatever.Insert(GetValuesToInsert(oldValue));
whatever.Insert(GetValuesToInsert(newValue));
于 2012-10-18T08:00:01.287 に答える
1

これはできません。とを使用する必要がありifますelse if

switch通常、別の手法を使用して右側のブランチにジャンプします(ジャンプテーブルと呼ばれます)。基本的に、これは単一のジャンプであり、そのターゲット位置は、の連続比較の数ではなく、valueから計算されます。switch(value)詳細はアーキテクチャによって異なります。

于 2012-10-18T07:57:37.800 に答える
0

単にswitchステートメントのルールを破っています。そこに表現を渡すことはできません。値を渡す必要があります。次のリンクを参照して くださいhttp://msdn.microsoft.com/en-us/library/06tc147t(v=vs.71).aspx

if-elseステートメントを使用する必要があります。

于 2012-10-18T08:00:38.880 に答える