我是C#的新手。看起来下面的代码在C中。有些请在下面解释如果声明
if ((!csentry.get_Item("UR.Action").get_IsPresent() ? false : csentry.get_Item("UR.Action").get_Value() == "Disable"))
它分解为以下内容。这比你的可读性高1000倍
var urlAction = csentry["UR.Action"];
if (urlAction.IsPresent && urlAction.Value == "Disable")
{
// then do stuff
}
注意:请参阅@madreflection对帖子的评论,以了解为什么这可能会严重受损
它的代码已被编译,然后反编译回C#,无需访问引用的程序集。这通常发生在ILSpy中;当您添加引用的程序集并且类型变为可用时,属性元数据允许它转换为属性访问
其他资源
条件运算符
?:
(通常称为三元条件运算符)计算布尔表达式,并返回计算两个表达式之一的结果,具体取决于布尔表达式的计算结果是true还是false
在这里,如果它正在评估三元运作。
从非常高的层次来看,它看起来像!csentry.get_Item(“UR.Action”)。get_IsPresent()如果存在UR.Action则不会执行if条件。如果它不存在那么这个条件得到评估csentry.get_Item(“UR.Action”)。get_Value()==“禁用”如果为真,那么if块被执行,否则它将不被执行。
当你有时间看看ternary_operator了解更多细节
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");
}