首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

赋值后比较 如何连写在一起

2013-07-08 
赋值后比较 怎么连写在一起本帖最后由 dyw518 于 2013-07-03 14:55:20 编辑vb里面 既是比较运算符又是赋

赋值后比较 怎么连写在一起
本帖最后由 dyw518 于 2013-07-03 14:55:20 编辑 vb里面 = 既是比较运算符又是赋值运算符,在有时候会引起混乱,很麻烦。
比如下面代码

       
Do While (ReadCount = ResStream.Read(BufferByte, 0, 1024)) > 0
    MemoryStream.Write(BufferByte, 0, ReadCount)
Loop

原意是将ResStream.Read(BufferByte, 0, 1024)后赋值给Readcount,然后判断是否读完流。但是因为这里“=”是比较运算符,所以一直返回 False

C#里面等效代码如下

while ((ReadCount = ResStream.Read(buffer, 0, 1024)) > 0)
{
MemoryStream.Write(BufferByte, 0, 1024);
}


[解决办法]
"=" 在表达式里面就是比较,不在表达式里面就是赋值,举例说明:
a=b '赋值
if 表达式 then  
a=b '赋值
if a=b then   '比较
dim c as boolean : c=(a=b) '比较

do while () ’括号里是表达式,所以"=" 就转为boolean值
只能分开写了。
[解决办法]
可以这么做:

'1)做个赋值函数,返回赋值结果
function Let2(byref a as long,byval b) as long
     a = b
     Let2 = a 
end function
'2)调用赋值函数赋值,并做比较。
sub loopit
Do While (let2(ReadCount,ResStream.Read(BufferByte, 0, 1024))) > 0     MemoryStream.Write(BufferByte, 0, ReadCount) Loop 
end sub

热点排行