-4

私はC#にかなり慣れていないので、何かについて混乱しています.....

何が起こっているのかをお見せしましょう。うまくいけば、ここで何が間違っているのか教えてください。

string incomming = Encoding.UTF8.GetString(bytes);
//MessageBox.Show(incomming); shows me the string "stop", No problem

executeCommand(incomming);

public void executeCommand(string action)
{
    MessageBox.Show(action + " was recieved"); // shows the string "stop", No  problem here... that works

    switch (action)
    { 
        case "start":
            MessageBox.Show("start was recieved"); //shows nothing
            break;

        case "stop":
             MessageBox.Show("stop was recieved"); //shows nothing
             break;
    }            
}
4

2 に答える 2

1

String に変換されている Byte 配列の内容を知らなければ、何かを手助けすることは非常に困難です。しかし、ここで試してみるべきことがいくつかあります。

  1. executeCommand(incomming)ウォッチ ウィンドウの type にブレークポイントを設定できincomming.ToCharArray()ます。文字列の一部である文字を表示するには、値列の緑色の円をクリックする必要があります。これにより、何を扱っているかがわかります。

  2. String.Containsメソッド を使用して、探している文字列に一致する着信を検索できます。


if (action.Contains("stop"))
    MessageBox.Show("stop was recieved");
else if (action.Contains("start"))
    MessageBox.Show("start was recieved");
于 2012-04-26T06:54:58.863 に答える
0

これに対する唯一の合理的な説明は、「停止」文字列の 1 つに英語とは異なる言語の文字が含まれているが、見た目は同じであるということです。この場合:

"stop" != "stоp"  

真です。

于 2012-04-26T04:59:36.037 に答える