开发者

Error when trying to use a ternary operator in C#

开发者 https://www.devze.com 2023-01-27 15:48 出处:网络
Here\'s my code: public void ToggleCheckBox() { if (chk开发者_StackOverflow社区Selected.Checked) ? chkSelected.Checked = false : chkSelected.Checked = true;

Here's my code:

public void ToggleCheckBox()
{   
    if (chk开发者_StackOverflow社区Selected.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!


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;


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.


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;


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!


I think you mean:

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

which can be shortened to:

chkSelected.Checked=!chkSelected.Checked


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..

0

精彩评论

暂无评论...
验证码 换一张
取 消