【发布时间】:2018-05-18 16:34:44
【问题描述】:
private void Disable_Proxy_textboxes(bool v)
{
v = !v;
address_textbox.Enabled = v;
port_textbox.Enabled = v;
port_label.ForeColor = Color.FromArgb(v?(255,255,255):(100, 100, 100));
address_label.ForeColor=v?(Color.FromArgb(255,255,255)):(Color.FromArgb(100,100,100));
}
在编写代码时,我决定使用三元运算符,但现在我真的很困惑为什么port_label.ForeColor = Color.FromArgb(v?(255,255,255):(100, 100, 100)); 中有错误。我知道下一行是非常正确的,但是为什么这一行显示以下错误:
Predefined type 'System.ValueTuple`3' is not defined or imported
cannot convert from '(int, int, int)' to 'int'
文档只是说
first_expression 和 second_expression 的类型必须是 相同,或者必须存在从一种类型到另一种类型的隐式转换。
那么在我的情况下,这两种数据类型不一样吗?这两种情况和这个例子不一样吗?
bool c=a?true:false;
a?(c=true):(c=false);
我不明白的是什么。也请这不是那些为什么这段代码不起作用之一,我不是在这里要求任何调试。谢谢。
【问题讨论】:
标签: c# ternary-operator argb