$我已经转换了我收到的数据。但是当我试图把它放在开关声明中时,它会做任何事情。你可以看到有一个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;
}
}
}
答案 0 :(得分:2)
byte[] inStream = new byte[10025];
你已经初始化了一个长度为10025的字节数组。如果你输入的数据不是那么长,当你把它转换成字符串时,你会得到一堆\ 0字符(字符串终结符)。
当您调用MessageBox.Show时,这些字符不会显示,因为它们是不可见的字符。
因此解决方案是将数组初始化为实际数据的大小
在将字符串输入到switch语句
之前,或者在字符串上调用.Replace("\0", "");
答案 1 :(得分:0)
问题在于(我假设)你正在使用C#7.0并且你试图匹配value tuple上的案例(你在case语句中使用字符串周围的括号意外收缩)。删除case语句中的括号,然后重试。