delete
delete

Reputation:

Error when trying to use a ternary operator in C#

Here's my code:

public void ToggleCheckBox()
{   
    if (chkSelected.Checked) ? chkSelected.Checked = false : chkSelected.Checked = true;

    //This works, but I want to write it using a ternary.
    if (chkSelected.Checked)
    {
        chkSelected.Checked = false;
    }
    else
    {
        chkSelected.Checked = true;
    }
}

What did I mess up on? Thanks!

Upvotes: 0

Views: 164

Answers (6)

bAN
bAN

Reputation: 13815

Because you have to use like a assignation:

 chkSelected.Checked =(chkSelected.Checked ? false : true);

Ternary operator is used like a assignation

But here It is not really a good idea to do that here and do

chkSelected.Checked =!chkSelected.Checked;

Shorter way..

Upvotes: 0

Tim Robinson
Tim Robinson

Reputation: 54714

Either do this:

if (chkSelected.Checked) chkSelected.Checked = false; else chkSelected.Checked = true;

...or this:

chkSelected.Checked = chkSelected.Checked ? false : true;

Or abandon the check and do this:

chkSelected.Checked = !chkSelected.Checked;

Upvotes: 4

Sean
Sean

Reputation: 62472

I think you mean:

chkSelected.Checked=(chkSelected.Checked ? false : true)

which can be shortened to:

chkSelected.Checked=!chkSelected.Checked

Upvotes: 0

Kobi
Kobi

Reputation: 137997

You're using assignment instead of comparison, and you don't need an if there. In fact, it isn't too clear what your intent is, but I'd guess it is:

chkSelected.Checked = !chkSelected.Checked;

Upvotes: 1

Arcturus
Arcturus

Reputation: 27055

Why not do:

chkSelected.Checked = !chkSelected.Checked;

Also, it does not compile, because of the if you put in front of it. Remove that and it will work as well!

Upvotes: 0

Øyvind Bråthen
Øyvind Bråthen

Reputation: 60684

Write this as

chkSelected.Checked = !chkSelected.Checked

instead.

To rewrite your exact example, it get's messy like this:

chkSelected.Checked =  (chkSelected.Checked) ? false : true;

The ?: operator returns, in this case, either trueor false. It cannot perform assignment.

Upvotes: 1

Related Questions