日期:2014-05-17  浏览次数:20824 次

判断文件是不是隐藏的两句代码结果竟然不一样?
本帖最后由 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() 你就看的很明白了,
至于
与或非  的东西,你可以看下书或百度

------解决方案--------------------
引用:
引用:第一句当然不对了,第一句判断文件属性只能是隐藏不能有其他的(如:只读+隐藏,存档+隐藏 都返回false)

第二句判断文件属性包含隐藏就返回true
第二句有点看不懂,(fi.Attributes & FileAttributes.Hidden) 不是一个与运算吗?我把&换成&&提示错误,而且……

你把位运算和逻辑运算搞混了吧?&是位运算