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

nim*_*ish 0 c#

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

var diff = orignalConfigFile.Where<KeyValuePair<string, List<ConfigurationValue>>>(x => !newConfig.Contains(x) || !x);

这里orignalConfigFile,newConfig是一本字典.ConfigurationValue是一个班级.

令我感到困惑的是声明(x => !newConfig.Contains(x) || !x) x不包含x for newConfig和x本身的东西.

Tim*_*ter 5

我认为这个类是隐含的可转换为bool这就是为什么这个编译:|| !x.

public static implicit operator bool(ConfigurationValue me)
{
   return me.BoolProperty;
}
Run Code Online (Sandbox Code Playgroud)

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

有关转换运算符的MSDN指南:

  • 如果最终用户未明确预期此类转换,请勿提供转换运算符
  • 如果转换可能有损,请勿提供隐式转换运算符.例如,不应该存在从Double到Int32的隐式转换,因为Double的范围比Int32宽.即使转换可能有损,也可以提供显式转换运算符.....