for(int k=1;k<=10;++k){
if (receiveMessage[k].Equals("故障")){
switch(k)
{
case 1:button1.Text="123";
break;
case 2:button2.Text="123";
break;
case 3:button3.Text="123";
break;
case 4:button4.Text="123";
break;
case 5:button5.Text="123";
break;
default:break;
} }
}在运行时报
未处理的“System.NullReferenceException”类型的异常出现在 system.windows.forms.dll 中。
其他信息: 未将对象引用设置到对象的实例。为什么会报这个错误?感觉是receiveMessage[k].Equals("故障")报错,因为将这一句改为(receiveMessage[k]=="故障")后就不抱错了,但后面的语句永远也无法执行.高手看看是什么原因?
if (receiveMessage[k].Equals("故障")){
switch(k)
{
case 1:button1.Text="123";
break;
case 2:button2.Text="123";
break;
case 3:button3.Text="123";
break;
case 4:button4.Text="123";
break;
case 5:button5.Text="123";
break;
default:break;
} }
}在运行时报
未处理的“System.NullReferenceException”类型的异常出现在 system.windows.forms.dll 中。
其他信息: 未将对象引用设置到对象的实例。为什么会报这个错误?感觉是receiveMessage[k].Equals("故障")报错,因为将这一句改为(receiveMessage[k]=="故障")后就不抱错了,但后面的语句永远也无法执行.高手看看是什么原因?
我用的socket通信,要将接收下来的字符串保存,必须用Encoding.BigEndianUnicode.getstring这个编码,但收下来后,就无法与正常的字符串比较了呀!
关键是receiveMessage[k]=Encoding.BigEndianUnicode.getstring(bb)得到的编码与"故障"的编码类型不一致,谁有好的办法让这两个编码转换为一致?!
System.Text.Encoding.Unicode.GetString
System.Text.Encoding.UTF7.GetString
System.Text.Encoding.UTF8.GetString
-------------
"故障".Equals(receiveMessage[k])这样就不会报错了
问题起源是在socket通信中,我在客户端要读一个文本文件,再将文本文件的内容发送到服务器端.文本文件保存用什么编码?编码与socket通信的编码不一致时要出错呀!