Ternary operator error: potential misuse of operator?

Ternary operator error: potential misuse of operator?

我正在尝试使用三元运算符并且仍在学习中,所以我并不完全了解它们的工作方式。

我有一行代码如下:

c.GetType() != typeof(CheckBox)
? c.Text = settingValue 
: ((CheckBox)c).Checked = bool.Parse(settingValue);

这行代码的目的是测试控件 c 是否为 CheckBox 类型,然后设置控件的文本或更改 Checked 的状态控制。但是这一行在 VS 中给我一个 CS0201 错误。

我知道我也可以为此使用 If 语句,但我想看看是否可以使用三元运算符将其压缩成一行。 我错过了什么?

无法使用条件运算符执行此操作。相反,使用正常的 if。它也更具可读性——不要总是试图将尽可能多的代码放在一行中。您可以使用模式匹配来避免转换:

if(c is Checkbox cb)
{
    cb.Checked = bool.Parse(settingValue);
}
else
{
     c.Text = settingValue;
}