[英]Visual Basic while loop syntax
我在下面的代碼中苦苦掙扎:
Dim req = WebRequest.Create(Uri)
Dim resp = req.GetResponse()
Dim stream As Stream = resp.GetResponseStream()
Dim Buffer As Byte() = New Byte(1023) {}
Dim MemStream As New MemoryStream()
Dim BytesRead As Integer = 0
Dim totalBytesRead As Long = 0
Dim reader As New BinaryReader(stream)
While ((BytesRead = reader.Read(Buffer, 0, Buffer.Length)) > 0)
BytesRead = reader.Read(Buffer, 0, Buffer.Length)
MemStream.Write(Buffer, 0, BytesRead)
totalBytesRead += BytesRead
End While
盡管閱讀器中有可用數據,但從未進入while循環。 從未設置變量BytesRead,這使我認為它將把“ BytesRead = reader.Read(...)”視為相等驗證器。 但是沒有運氣,因為我在調試模式下試圖將BytesRead變量更改為1024(緩沖區的長度(最大讀取值)),但是結果相同。
我解決了這個問題,將while循環更改為以下“ do-while”循環:
Do
BytesRead = reader.Read(Buffer, 0, Buffer.Length)
MemStream.Write(Buffer, 0, BytesRead)
totalBytesRead += BytesRead
Loop While BytesRead > 0
我的問題是; 為什么while循環無法按我的預期工作?:
((BytesRead = reader.Read(Buffer, 0, Buffer.Length)) > 0) => ((output) > 0)
嚴格啟用Option,您將看到正在發生的事情。 在VB中,=運算符既是賦值運算符又是比較。 一段時間使用時,它將比較值並返回true或false。 然后,它將嘗試對布爾值(不是值)進行大於0的操作。
簡而言之
While ((BytesRead = reader.Read(Buffer, 0, Buffer.Length)) > 0)
會做:BytesRead等於reader.Read(Buffer,0,Buffer.Length)嗎? 此布爾值是否大於0。
我認為這段代碼可以在C#中使用,因為它具有=和==。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.