我需要知道如何解释以下内容,
var diff = orignalConfigFile.Where<KeyValuePair<string, List<ConfigurationValue>>>(x => !newConfig.Contains(x) || !x);
此处orignalConfigFile
,newConfig
是字典。 ConfigurationValue
是一个类。
令我困惑的是陈述(x => !newConfig.Contains(x) || !x)
x对于newConfig和x本身不包含x的东西。
答案 0 :(得分:5)
我认为该类implicitely可转换为bool
,这就是编译的原因:|| !x
。
public static implicit operator bool(ConfigurationValue me)
{
return me.BoolProperty;
}
一般来说,这不是最佳实践。您应该很少使用隐式转换,因为它很难理解并且容易出错。
MSDN guidelines on Conversion Operators:
答案 1 :(得分:1)
x => !newConfig.Contains(x) || !x
表示:
originalConfigFile中当前检查的项目是x。 那个特定的x不在newConfig集合中,或者它是假的,或者x重载了!运算符,它返回false。
答案 2 :(得分:1)
x => !newConfig.Contains(x) || !x
是lambda expression,是表示委托的语法。在这种情况下,委托是一个将计算为布尔值的函数,如果newConfig不包含x或者x为false,则为true,其中x是orignalConfigFile的枚举返回的每个对象。
答案 3 :(得分:0)
这里
X=> stands for Anonymous Method Which is used to Iterate the Result instead using foreach loop..
答案 4 :(得分:0)
我认为newConfig
是List<ConfigurationValue>
而!newConfig.Contains
表示x
不在newConfig list
。