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);