如何正确翻译条件(无括号)?

时间:2018-05-12 08:51:00

标签: c#

我有条件,程序员编码的内部没有( )括号...如何正确括起这样丑陋的编码?

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

1 个答案:

答案 0 :(得分:5)

&&在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#中的优先级,但它实际上直接来自语法。我很高兴这个文档,因为每次我想要了解运算符绑定时我都不想阅读语法...