Null Coalesce与颜色

时间:2014-09-03 13:10:45

标签: c# null-coalescing-operator null-coalescing

protected override void OnEnter(EventArgs e)
    {
        // this.Font = new Font(this.Font, FontStyle.Italic);
        base.BackColor = _colors.SelectedBackColor ?? base.BackColor;
        base.ForeColor = _colors.SelectedForeColor ?? base.BackColor;
        base.OnEnter(e);
    }

我得到的错误是

  

错误519运营商'??'不能应用于类型的操作数   'System.Drawing.Color'和'System.Drawing.Color'

我认为它必须是2个匹配类型的空合并

2 个答案:

答案 0 :(得分:7)

Color是一个结构,因此永远不能为空。这就是你收到错误的原因。

答案 1 :(得分:5)

Null coalesce运算符不能应用于非可空值类型。如果您希望将此作品付诸实施,则应在SelectedBackColor类中将SelectedForeColor_colors置为可空:

public Color? SelectedBackColor {get;set;}
public Color? SelectedForeColor {get;set;}

现在,合并运算符??按预期工作。此外,编译器有足够的信息来确定_colors.SelectedForeColor ?? base.BackColor永远不会返回null,从而使得对非可空类型的属性的赋值合法。