switch 字符串语句不起作用?

switch string statement not working?

$我已经转换了我收到的数据。但是当我试图把它放在一个开关语句中时,它没有做任何事情。如您所见,有一个 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;
            }
        }
    }
byte[] inStream = new byte[10025];

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

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

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

或者在将字符串输入 switch 语句之前调用 .Replace("[=11=]", ""); 字符串

问题是(我假设)您正在使用 C# 7.0,并且您正试图在 value tuple 上匹配大小写(您不小心在 case 语句中使用字符串周围的括号进行了限制)。删除 case 语句中的括号,然后重试。