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 语句中的括号,然后重试。
$我已经转换了我收到的数据。但是当我试图把它放在一个开关语句中时,它没有做任何事情。如您所见,有一个 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 语句中的括号,然后重试。