作者cole945 (躂躂..)
看板Visual_Basic
标题Re: [.NET] 请问一下如这一句的叙述
时间Fri Jul 20 01:24:43 2007
※ 引述《glovev (阿章)》之铭言:
: Dim fileattr As FileAttribute
: fileattr = GetAttr(TextBox1.Text)
: If (fileattr And FileAttribute.Directory) = FileAttribute.Directory Then
: out &= "这是目录" & vbNewLine
: 请问if的叙述为什麽要用And来做判断 ,不能直接用fileattr=fileAttribute某个
: 判断式来完成这个叙述吗
这边的 And 不是 Logical AND 而是 Bitwise AND~
这是一种利用一个或多个bit来标记(flag)属性的技巧.
例如:用 bit0为1表示他是目录, bit1为1表示他是唯读, bit2为1表示他被加密...
而 FileAttribute.Direcotr 的值是 0000 0001 (二进位)
所以把两个东西做 And 位元运算:
fileattr: 0000 011
1
Directory: 0000 000
1
结果: 0000 000
1
就会得到 Direcotry 本身. 如此就可以判断他是否为目录,
同理可以用来检查他是否为 加密、压解、唯读、隐藏等等..
有时会单用是否大於零来判断 (.... And ...)
> 0
不过这种方式不适於多bit的flag (比如说 Dirctory是 0000 00
11 之类)
既然文件没特别提, 所以用 ( ... and Flag) = Flag 来判断会是比较保险的做法
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.143.118
1F:推 glovev:了解 谢谢cole~解除了我心中疑惑 07/20 01:26