简体   繁体   中英

What does this snippet of C# code do?

What does result.IsVisible equal?

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

That depends on the values of obj1.status.abc_Report and obj1.AnotherValue.ToBoolean() (and it all depends on whether a==b or not).

I'm not quite sure of what the real question is here - which bit is confusing you?

One bit which may be confusing you is the shortcircuiting && operator (and possibly the lack of bracing!)

The && operator will only evaluate its right hand side if the left hand side evaluates to true : and the overall result of the expression is true if and only if both sides evaluates to true . (I'm assuming no strange user-defined conversions here.)

So another way of writing it would be:

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

Note that a condition comparing Booleans, like this:

obj1.AnotherValue.ToBoolean() == false

would usually be written like this:

!obj1.AnotherValue.ToBoolean()

(Note the exclamation mark at the start - the logical "not" operator.)

The same as this, in many less lines:

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;
    }
}

In simple words:

If a is equal to b:

result will be visible only if:

object1's status's abc_report is Yes(Y = Yes most probably) AND object1's other value cannot be converted to a Boolean

I'm guess result.IsVisible is a boolean

It will be true if the following conditions are true: obj1.status.abc_REPORT == 'Y' and obj1.AnotherValue.ToBoolean() == false

Also, a == b must be true to enter the initial if

lets go line by line:

  if(a==b)

obvious if value of a equals value of b the execute following line

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

result is some object (maybe winforms controls etc) which has a property IsVisible set it to true if obj1.status.abc_REPORT is equal to 'Y' and also obj1.AnotherValue.ToBoolean() is equal to false;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM