Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Оператор Switch Case


Автор: Machaon 2.4.2012, 00:17
Есть процедура:
Код

       static public void Case(string commands)
        {
            switch (commands)
                   
            {
                case "a":
                    MessageBox.Show("нажата а");
                    break;
                case "b":
                    MessageBox.Show("нажата b");
                    break;
                case "1":
                    MessageBox.Show("нажата 1");
                    break;

            }


        }

Вызываю процедуру методом:
Код

Case(System.Text.Encoding.Unicode.GetString( массив байт )); //в массиве байтов к примеру содежится символ а


но ничего case несрабатывает в чем может быть проблема???

Автор: SKrivosein 2.4.2012, 01:16
Уверен в том как выбераеш из масива? В свиче ошибки невижу.

Автор: Machaon 2.4.2012, 02:45
В том то и дело что не уверен!
Массив байтов я получаю из буфера сокета:
Код

public byte[] dataBuffer = new byte[1024];

Автор: SKrivosein 2.4.2012, 02:52
Работаеш в студии? Посмотри в режиме отладки чего ты посылаеш в свою процедуру (method).
А то написал словами-массив байт  smile 

Автор: Machaon 2.4.2012, 09:01
Спс как я сразу неподумал  smile 

В буфере находиться строка:    "a\r\n\0"    

Только вот другой вопрос как мне теперь избавиться от литералов?

Автор: Machaon 2.4.2012, 09:18
Можно впринципе вот так
Код

string commands = dataBuffer.Replace("\r\n\0",string.Empty);


но только вот хотелось бы более правильный способ.
Подскажите пожалуйста.

Автор: Machaon 3.4.2012, 18:58
Проблема в принципе понятна оказалось что в массиве пустые байты пакостят моему свичу =(. http://forum.vingrad.ru/forum/topic-349716.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)