首页 > 解决方案 > 如何正确翻译条件(不带括号)?

问题描述

我有条件,( )程序员编码的括号里面没有括号......我怎样才能正确地括号这样丑陋的编码?

if( c_1 && c_2 || c_3 || c_4 && c_5 || c_6 && c_7 || c_8 || c_9 && c_10)

标签: c#

解决方案


&&C# 中的优先级1||高于. 这意味着你的表达是有效的:

if ((c_1 && c_2) || c_3 || (c_4 && c_5) || (c_6 && c_7) || c_8 || (c_9 && c_10))

为了提高可读性,我可能会将条件提取到具有有意义名称的局部变量中。例如:

bool recentlyActive = (c_1 && c_2) || c_3;
bool passwordDisabled = (c_4 && c_5) || (c_6 && c_7);
bool userBanned =  c_8 || (c_9 && c_10);
if (recentlyActive || passwordDisabled || userBanned)
{
    ...
}

1 C# 中的优先级记录在规范中,但它确实直接来自语法。不过,我很高兴该文档,因为我不想每次想了解运算符如何绑定时都必须阅读语法...


推荐阅读