C#encoding.ascii.getstring问题

时间:2010-03-03 21:07:38

标签: c#

在下面给出的代码段中我在Windows应用程序表单中得到错误,但相同的代码适用于控制台应用程序。我是否必须在这方面做出任何考虑?

任何想法都会受到赞赏。

 Byte[] bReceive = new Byte[1024]; 
int i = mySocket.Receive(bReceive, bReceive.Length, 0); 
//Convert Byte to String string 
sBuffer = Encoding.ASCII.GetString(bReceive);

这在控制台应用程序中工作正常,但我现在尝试在基于表单的应用程序中运行此代码,但我得到GETstring需要参数的错误。任何人都可以表明正确的方向。

由于

3 个答案:

答案 0 :(得分:2)

无论您是在控制台还是WinForms应用程序中运行此代码,都应该没有区别。我认为你的代码中的其他地方必定有错误。

从错误消息中猜测,也许您偶然写下了以下内容:

sBuffer = Encoding.ASCII.GetString();

这会出现以下错误:

No overload for method 'GetString' takes '0' arguments

答案 1 :(得分:0)

取决于从套接字接收的数据量

int i = mySocket.Receive(bReceive, bReceive.Length, 0);

'GetString`有一个超载......

//Convert Byte to String string 
sBuffer = Encoding.ASCII.GetString(bReceive, 0, i);

值得注意的是检查i的值是否大于1以便先检查,否则如果i为-1,则上述'GetString'方法可能会失败。

希望这有帮助, 最好的祝福, 汤姆。

答案 2 :(得分:0)

如果您有可能在基于.NET Compact Framework的表单应用程序上工作,那么可能有一种可能吗?如果是,则不支持此方法。你必须使用

Encoding.GetString(Byte[], Int32, Int32)方法。

参考:Encoding.GetString Method