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

时间:2009-07-01 05:19:53

标签: c#

结果是什么.IsVisible相等?

    if(a==b)
        result.IsVisible = obj1.status.abc_REPORT == 'Y'
            && obj1.AnotherValue.ToBoolean() == false;

5 个答案:

答案 0 :(得分:5)

这取决于obj1.status.abc_Reportobj1.AnotherValue.ToBoolean()的值(这一切都取决于a == b与否)。

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

可能让你感到困惑的一点是短路和&&操作员(可能缺乏支撑!)

&amp;&amp;如果左侧评估为true,则运算符评估其右侧:当且仅当两者<时,表达式的整体结果为true / em> sides评估为true。 (我假设这里没有奇怪的用户定义转换。)

另一种写作方式是:

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

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

obj1.AnotherValue.ToBoolean() == false

通常会这样写:

!obj1.AnotherValue.ToBoolean()

(注意开头的感叹号 - 逻辑“not”运算符。)

答案 1 :(得分: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;
    }
}

答案 2 :(得分:0)

简单来说:

如果a等于b:

只有在以下情况下才能看到

结果:

object1的状态是abc_report是(最可能是Y =是)AND object1的其他值无法转换为布尔值

答案 3 :(得分:0)

我猜测结果.IsVisible是一个布尔值

如果满足以下条件,则为真: obj1.status.abc_REPORT =='Y' 和 obj1.AnotherValue.ToBoolean()== false

此外,a == b必须为true才能输入初始值

答案 4 :(得分:0)

让我们逐行:

  if(a==b)

显然,如果a的值等于b执行以下行

 result.IsVisible = obj1.status.abc_REPORT == 'Y'
        && obj1.AnotherValue.ToBoolean() == false;

结果是一些对象(可能是winforms控件等),如果obj1.status.abc_REPORT等于'Y'并且obj1.AnotherValue.ToBoolean()等于false,则有一个属性IsVisible将其设置为true;