这段C#代码有什么作用?

Pau*_*and 1 c#

结果是什么.IsVisible相等?

    if(a==b)
        result.IsVisible = obj1.status.abc_REPORT == 'Y'
            && obj1.AnotherValue.ToBoolean() == false;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

这取决于值obj1.status.abc_Reportobj1.AnotherValue.ToBoolean()(和这一切都取决于是否== B或没有).

我不太确定这里真正的问题是什么 - 这让你感到困惑?

一位,可能会混淆你是短路&&运营商(也可能是缺乏支撑的!)

&&运算符将如果左侧评估,以评估其右侧true:和表达的总体结果是true当且仅当这两个双方的计算结果为true.(我假设这里没有奇怪的用户定义转换.)

所以另一种写作方式是:

if (a == b)
{
    bool visibility = false;
    if (obj1.status.abc_REPORT == 'Y')
    {
        if (obj1.AnotherValue.ToBoolean() == false)
        {
            visibility = true;
        }
    }
    result.IsVisible = visibility;
}
Run Code Online (Sandbox Code Playgroud)

请注意比较布尔运算的条件,如下所示:

obj1.AnotherValue.ToBoolean() == false
Run Code Online (Sandbox Code Playgroud)

通常会这样写:

!obj1.AnotherValue.ToBoolean()
Run Code Online (Sandbox Code Playgroud)

(注意开头的感叹号 - 逻辑"非"运算符.)


Joh*_*han 5

与此相同,在更少的行中:

if (a==b) {
    if (obj1.status.abc_REPORT == 'Y') {
         if (obj1.AnotherValue.ToBoolean() == false) {
             result.IsVisible = true;
         }
         else {
             result.IsVisible = false;
         }
    }
    else {
        result.IsVisible = false;
    }
}
Run Code Online (Sandbox Code Playgroud)