2
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 个匹配类型

4

2 回答 2

7

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

于 2014-09-03T13:12:36.637 回答
5

空合并运算符不能应用于不可为空的值类型。如果你想完成这项工作,你应该在你的类中设置SelectedBackColor和为空:SelectedForeColor_colors

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

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

于 2014-09-03T13:18:18.723 回答