switch string语句不起作用?

时间:2017-11-20 18:57:50

标签: c# tcpclient tcp-ip

$我已经转换了我收到的数据。但是当我试图把它放在开关声明中时,它会做任何事情。你可以看到有一个MessageBox.Show(rData),显示我收到的数据及其好处。只在开关上。有什么建议吗?

    string readData = null;

    public void getMessage()
    {
        while (true)
        {
            serverStream = clientSocket.GetStream();
            int buffsize = 0;
            byte[] inStream = new byte[10025];
            buffsize = clientSocket.ReceiveBufferSize;
            serverStream.Read(inStream, 0, buffsize);
            string rData = Encoding.ASCII.GetString(inStream);
            readData = "" + rData;
            //MessageBox.Show(rData);

            switch (readData)
            {
                case ("Overview"):
                    MessageBox.Show("Start");
                    break;
                default:
                    break;
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

byte[] inStream = new byte[10025];

你已经初始化了一个长度为10025的字节数组。如果你输入的数据不是那么长,当你把它转换成字符串时,你会得到一堆\ 0字符(字符串终结符)。

当您调用MessageBox.Show时,这些字符不会显示,因为它们是不可见的字符。

因此解决方案是将数组初始化为实际数据的大小

在将字符串输入到switch语句

之前,或者在字符串上调用.Replace("\0", "");

答案 1 :(得分:0)

问题在于(我假设)你正在使用C#7.0并且你试图匹配value tuple上的案例(你在case语句中使用字符串周围的括号意外收缩)。删除case语句中的括号,然后重试。