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个匹配类型的空合并
答案 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
,从而使得对非可空类型的属性的赋值合法。