2010-03-03 412 views
0

在下面给出的代码片段中,我在Windows应用程序窗体中得到错误,但相同的代码对控制台应用程序工作正常。我需要在这方面做任何考虑吗?C#encoding.ascii.getstring问题

任何想法,将不胜感激。

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

这工作在控制台应用程序很好,但我想在现在的形式运行该代码基础的应用,但我得到错误的GetString需要一个自变量。任何人都可以展示正确的方向。

感谢

+2

什么是您得到确切的错误信息? – 2010-03-03 21:13:54

+0

从现在开始直到永恒,请停止使用匈牙利符号。 – Aaronaught 2010-03-03 21:19:43

+0

这两个应用程序是否使用相同的框架? – renegadeMind 2010-06-07 14:22:05

回答

2

应该有这样的代码是否在控制台或WinForms应用程序运行它没有区别。我认为你的代码中的其他地方必须有错误。

从错误消息猜测,也许你写了意外以下几点:

sBuffer = Encoding.ASCII.GetString(); 

这提供了以下错误:

No overload for method 'GetString' takes '0' arguments 
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”方法可能会失败。

希望这会有所帮助, 最好的问候, 汤姆。

0

有一种可能性,如果您有任何机会处理基于.NET Compact Framework的Forms应用程序?如果是这样,则不支持此方法。您必须使用

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

参考:Encoding.GetString Method