将C#转换为VB.net - 字节数组循环

时间:2017-04-18 21:09:28

标签: c# vb.net

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

这是我在vb.net中需要的C#while循环

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我不相信您可以在json.dumps条件语句中按预期执行赋值,因为Visual Basic使用While运算符进行相等比较和赋值。这是C#的一个好处,因为它可以轻松区分两者(因为它们是不同的运算符)。

相反,首先尝试在第一次调用的循环之外读取它,然后在循环中为所有后续调用处理它:

=

答案 2 :(得分: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的参数。