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;
}
我正在尝试使用三元运算符并且仍在学习中,所以我并不完全了解它们的工作方式。
我有一行代码如下:
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;
}