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);
我不理解的是什么。另外请不要这是为什么这段代码不能正常工作,我不是在这里要求任何调试。感谢。
答案 0 :(得分:3)
问题不在于条件运算符,双方都是ValueTuple`3
类型。因此条件运算符?
返回ValueTuple`3
。
但Color.FromArgb
的重载没有ValueTuple`3
作为参数。
编译器不会将ValueTuple`3
解构为您打算使用的重载的三个int
参数。