C# 三值运算符| |预定义类型';System.ValueTuple`3';未定义或导入
在编码时,我决定使用三元运算符,现在我真的很困惑为什么在C# 三值运算符| |预定义类型';System.ValueTuple`3';未定义或导入,c#,ternary-operator,argb,C#,Ternary Operator,Argb,在编码时,我决定使用三元运算符,现在我真的很困惑为什么在port_label.ForeColor=Color.FromArgb(v?(255255255):(100100100))。我知道下一行非常正确,但为什么这一行显示以下错误: private void Disable_Proxy_textboxes(bool v) { v = !v; address_textbox.Enabled = v; port_textbox.Enabled = v; port_la
port_label.ForeColor=Color.FromArgb(v?(255255255):(100100100))代码>。我知道下一行非常正确,但为什么这一行显示以下错误:
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));
}
医生只是说
第一个_表达式和第二个_表达式的类型必须是
相同,或者必须存在从一种类型到另一种类型的隐式转换
那么,在我的例子中,这两种数据类型是否都不相同?这两种情况是否与本例不同
Predefined type 'System.ValueTuple`3' is not defined or imported
cannot convert from '(int, int, int)' to 'int'
我不明白的是什么。另外请注意,这不是为什么这段代码不起作用的原因之一,我不要求在这里进行任何调试。谢谢。问题不在于条件运算符,两边都是ValueTuple`3
类型。因此,条件运算符?
返回一个ValueTuple`3
但是没有重载将ValueTuple`3
作为参数
编译器不会将ValueTuple`3
解构为要使用的重载的三个int
参数。问题不在于条件运算符,两边都是ValueTuple`3
类型。因此,条件运算符?
返回一个ValueTuple`3
但是没有重载将ValueTuple`3
作为参数
编译器不会将ValueTuple`3
解构为您要使用的重载的三个int
参数。好的,我明白了Color.FromArgb
不接受ValueTuple`3
类型为Color的值。FromArgb=ValueTuple`3
完全无效。它将ValueTuple`3
作为参数,这一行中有错误,但下一行中没有。我做对了吗?初学者。@Rishav是的,在下一行中,条件运算符返回一个颜色
(因为双方都调用Color.FromArgb()
),并将其分配给ForeColor
。在第一行中,您尝试使用ValueTuple`3
从argb()调用,这导致了错误。好的,我明白了Color.FromArgb
不接受ValueTuple`3
类型为Color的值。FromArgb=ValueTuple`3
完全无效。它将ValueTuple`3
作为参数,这一行中有错误,但下一行中没有。我做对了吗?初学者。@Rishav是的,在下一行中,条件运算符返回一个颜色
(因为双方都调用Color.FromArgb()
),并将其分配给ForeColor
。在第一行中,您尝试使用ValueTuple`3
从argb()调用,这会导致错误。
bool c=a?true:false;
a?(c=true):(c=false);