我有CanExecute
一个WPF命令,根据我对编译器的明确程度,它的工作方式似乎有所不同。问题是,我不希望一定要明确。
private bool CanRemoveField()
{
return SelectedField != null &&
Context.Item.Id == 0
? _fieldsByFieldModel.ContainsKey(SelectedField)
: !_hasAnyCosts;
}
上面的代码在查询为Id != 0
true的Item时,尽管 按钮被启用,但该按钮仍SelectedField
处于启用状态null
,因此我希望有条件的按钮可以短路并返回false
。
代码稍作调整:
private bool CanRemoveField()
{
return SelectedField != null &&
(Context.Item.Id == 0
? _fieldsByFieldModel.ContainsKey(SelectedField)
: !_hasAnyCosts);
}
我在三元组if周围引入了一些括号,这现在表现出在未选择任何字段时禁用按钮的期望行为。
考虑到它是三元组,如果我希望我的行为不需要括号就可以实现,因为它应该被视为一个陈述,不是吗?
你看到有意义的结果,因为在&&
逻辑和操作符比的优先级高? :
的条件表达式。
因此,您的第一个代码段本质上是:
return (SelectedField != null && Context.Item.Id == 0)
? _fieldsByFieldModel.ContainsKey(SelectedField)
: !_hasAnyCosts;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句