C# 有人能告诉我C代码中使用的以下语句的含义吗?

C# 有人能告诉我C代码中使用的以下语句的含义吗?,c#,C#,我需要知道如何解释以下内容 var diff=orignalConfigFile.Wherex=>!newConfig.Containsx | |!x 这里的orignalConfigFile,newConfig是一个字典。ConfigurationValue是一个类 让我困惑的是语句x=>!newConfig.Containsx | |!x x不包含x的东西,用于newConfig和x本身。此处 X=> stands for Anonymous Method Which is used

我需要知道如何解释以下内容

var diff=orignalConfigFile.Wherex=>!newConfig.Containsx | |!x

这里的orignalConfigFile,newConfig是一个字典。ConfigurationValue是一个类

让我困惑的是语句x=>!newConfig.Containsx | |!x x不包含x的东西,用于newConfig和x本身。

此处

X=> stands for Anonymous Method Which is used to Iterate the Result instead using foreach loop..
x=>!newConfig.Containsx | |!x表示:

原始配置文件中当前选中的项是x。
特定的x不在newConfig集合中,或者它为false,或者x重载了!运算符,并返回false。

我假设该类可转换为bool,这就是为什么编译:| |!十,

一般来说,这不是最佳做法。您应该很少使用隐式转换,因为它很难理解并且容易出错

:

如果最终用户未明确预期此类转换,则不要提供转换运算符 如果转换可能有损,请不要提供隐式转换运算符。 例如,不应该有从Double到Int32的隐式转换,因为Double的范围比Int32宽。即使转换可能有损,也可以提供显式转换运算符。。。。。
x=>!newConfig.Containsx | |!x是a,这是表示委托的语法。在本例中,委托是一个将计算为布尔值的函数,如果newConfig不包含x,则为true;如果x为false,则为x,其中x是orignalConfigFile枚举返回的每个对象。

我认为newConfig是一个列表,并且!newConfig.Contains表示x不在newConfig列表中。

什么是newConfig?ConfigurationValue的实例?它真的可以编译吗?因为x应该是一个KeyValuePair@TimSchmelter有趣的是,面对同样的问题,我也无法让它工作。你是不是让操作符超载了!对于KeyValuePairC,它不像C/C++那样将null解释为false。我想not-C对我来说太多了。编辑了我的答案!lambda中的x也让我感到困惑。我想你说得对
public static implicit operator bool(ConfigurationValue me)
{
   return me.BoolProperty;
}