空 与颜色合并
本文关键字:合并 颜色 | 更新日期: 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
类中的SelectedBackColor
和SelectedForeColor
设置为空:
public Color? SelectedBackColor {get;set;}
public Color? SelectedForeColor {get;set;}
现在,合并运算符??
按预期工作。此外,编译器有足够的信息来确定_colors.SelectedForeColor ?? base.BackColor
永远不会返回null
,使得对不可为空类型的属性的赋值合法。