我是C#的新手。看起来下面的代码在C中。请在下面的if语句中解释一下
if ((!csentry.get_Item("UR.Action").get_IsPresent() ? false : csentry.get_Item("UR.Action").get_Value() == "Disable"))
答案 0 :(得分:5)
它细分为以下内容。这是您可读性的1000倍
var urlAction = csentry["UR.Action"];
if (urlAction.IsPresent && urlAction.Value == "Disable")
{
// then do stuff
}
注意 :请参阅@madreflection在帖子中的评论,以了解为什么可能会造成如此严重的破坏
它是已编译的代码,然后反编译回C#,而无需 访问引用的程序集。这通常发生在ILSpy中;当你 添加引用的程序集,并且类型可用, 属性元数据可以将其转换为属性访问
其他资源
条件运算符
?:
,通常称为三元条件运算符 运算符,计算一个布尔表达式,然后返回的结果 根据是否为布尔值,计算两个表达式之一 表达式的计算结果为真或假
答案 1 :(得分:0)
如果if语句基本上表明是否满足条件,请执行此操作。在这种情况下,它是说:
如果!csentry.get_Item("UR.Action").get_IsPresent() ? false : csentry.get_Item("UR.Action").get_Value()
等于"Disable"
,请执行不包含的结果。
需要更多信息才能为您提供确切的答案。但是,一旦您意识到它们是如何工作的,如果语句很简单。基本格式为:
if (condition) {
result
}
说我必须为一个说“嗨”的人做一个简单的响应程序
if (input == 'hi') {
printf("hello");
}
答案 2 :(得分:0)
这里是如果要评估三元运算。
从很高的层次来看,如果存在UR.Action,则它看起来像 !csentry.get_Item(“ UR.Action”)。get_IsPresent() 。如果条件不执行。如果不存在,则评估此条件 csentry.get_Item(“ UR.Action”)。get_Value()==“ Disable” ,如果为true,则使用if块被执行,否则将无法执行。
如果有时间,请查看ternary_operator了解更多详细信息