读书人

判断资料是不是隐藏的两句代码结果竟然

发布时间: 2013-02-24 17:58:57 作者: rapoo

判断文件是不是隐藏的两句代码结果竟然不一样?
本帖最后由 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) 不是一个与运算吗?我把&换成&&提示错误,而且……

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

读书人网 >C#

热点推荐