2017-04-18 118 views
0

好的,请在vb.net中使用C#中的一些示例代码。通常不是什么大问题,但我的大脑已经完全锁定在这个While循环中。整体代码使用XML字符串和文件进行PUT Web请求。 While循环正在读取文件的字节并添加到Web请求中(我认为 - 再次锁定大脑)。像往常一样感谢任何帮助提前。将C#转换为VB.net - 字节数组循环

这里是C#while循环,我需要在vb.net

while ((bytesRead = postData.Read(buffer, 0, buffer.Length)) != 0) 
{ 
requestStream.Write(buffer, 0, bytesRead); 
} 

这里是我目前在vb.net(这是错误的)

While (bytesRead, postData.Read(buffer, 0, buffer.Length)) <> 0 
      requestStream.Write(buffer, 0, bytesRead) 
     End While 
+0

作为第一步,您可以随时尝试Telerik的代码转换器:http://converter.telerik.com/ – Sorceri

回答

0

内部的分配表达式在vb.net中不起作用。这实际上需要更多的代码:

bytesRead = postData.Read(buffer, 0, buffer.Length) 
While bytesRead <> 0  
    requestStream.Write(buffer, 0, bytesRead) 
    bytesRead = postData.Read(buffer, 0, buffer.Length) 
End While 
0

我不相信While条件语句中预期可以执行任务的Visual Basic使用的=运营商都平等的比较和分配。这是C#的好处之一,它可以轻松区分两者(因为它们是不同的运营商)。

相反,尝试开始阅读它的循环之外第一个呼叫,然后在循环中处理它随后所有的电话:

' Initial read ' 
bytesRead = postData.Read(buffer, 0, buffer.Length) 
' Read if there are bytes to be read ' 
While bytesRead <> 0  
    ' Write the current bytes out of the buffer ' 
    requestStream.Write(buffer, 0, bytesRead) 
    ' Read some more ' 
    bytesRead = postData.Read(buffer, 0, buffer.Length) 
End While 
+0

感谢您的帮助,可能会工作。 – Brettvd

0

C#像其他C衍生语言中允许使用分配的作为表达。 VB不允许这样做。您可以明确地完成分配(如其他答案中所做的那样),也可以将其转换为函数。

由于后者的一个例子:

Function ReadBytes(<insert correct declaration for buffer here>, ByRef bytesRead as Integer) As Boolean 
    bytesRead = postData.Read(buffer, 0, buffer.Length) 
    Return bytesRead <> 0 
End Function 

While(ReadBytes(buffer, bytesRead)) 
    requestStream.Write(buffer, 0, bytesRead) 
End While 

取决于其他细节,你没有显示,则可能还需要postData是一个参数ReadBytes