空 与颜色合并

本文关键字:合并 颜色 | 更新日期: 2023-09-27 18:20:26

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 个匹配类型才能进行空合并

空 与颜色合并

Color是一个

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

Null 合并运算符不能应用于不可为空的值类型。如果要执行此操作,则应将_colors类中的SelectedBackColorSelectedForeColor设置为空:

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

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