判断文件是不是隐藏的两句代码结果竟然不一样?
本帖最后由 world97 于 2013-02-07 11:20:54 编辑
fi.Attributes == FileAttributes.Hidden
(fi.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden
敲代码的时候用了第一句,发现达不到效果,然后上网搜索了一下发现了第二句的写法,竟然成功了?第一句的写法不对吗?
------解决方案--------------------第一句当然不对了,第一句判断文件属性
只能是隐藏不能有其他的(如:只读+隐藏,存档+隐藏 都返回false)
第二句判断文件属性
包含隐藏就返回true
------解决方案--------------------当然不正确,文件可以有好几个FileAttributes,比如:只读+隐藏。
------解决方案--------------------fi.Attributes 是一个Flag 标示的枚举(因为这样可以包含多个属性),所以是可以用& (与来操作)
用 fi.Attributes.ToString() 你就看的很明白了,
至于
与或非 的东西,你可以看下书或百度
------解决方案--------------------
你把位运算和逻辑运算搞混了吧?&是位运算