有人可以解释这个区别。我试图避免文件夹中的隐藏文件并获取计数。 1声明不起作用,但第二声明不起作用 声明有效。我无法弄清楚原因。什么是'&'在linq。提前谢谢!
subFolder.GetFiles().Select(Function(k) k).Where(Function(m) m.Attributes <> FileAttributes.Hidden).Count
subFolder.GetFiles().Select(Function(k) k).Where(Function(m) (m.Attributes And FileAttributes.Hidden) = 0).Count
答案 0 :(得分:2)
m.Attributes是[Flags]
枚举,这意味着值中的每个位代表不同的标志。执行<>
时,您正在测试“隐藏的不是唯一设置的值吗?”对于许多文件都是如此。当您执行& == 0
时,您正在测试“仅查看隐藏位,是否将值设置为0?换句话说,是否未设置隐藏标志?”
答案 1 :(得分:2)
var Body = React.createClass({
getInitialState = function() {
return {};
},
componentDidMount: function() {
intervalId = setInterval(this.refreshStats, 1000);
this.setState({intervalId: intervalId});
},
componentWillUnmount: function(){
clearInterval(this.state.intervalId);
},
refreshStats: function() {
console.log(this.state.intervalId);
clearInterval(this.state.intervalId);
},
render: function() {
...
}
});
可以包含一些标记值的组合,m.Attributes
就是其中之一。(完整列表可以在MSDN中看到)
所以,第一个陈述的谓词:
FileAttributes.Hidden
测试“不是 m.Attributes <> FileAttributes.Hidden
只包含一个标记m.Attributes
)”,对于Hidden
和Hidden
的组合的值,或者{{ {1}}和ReadOnly
等
第二个陈述:
Hidden
测试“从System
获取(m.Attributes And FileAttributes.Hidden) = 0
的部分值,并查看是否未设置”,至少如果该值未设置Hidden
则为真,并且其他标志被忽略。因此,对于m.Attribute
和Hidden
,或Hidden
和ReadOnly
等的组合,这是错误的。
作为旁注,Hidden
什么都不做,可以省略。
System