ColorPicker _clpicker;
System.Windows.Media.Color c = _clpicker.SelectedColor;
错误:
无法隐式转换类型'System.Windows.Media.Color?'至 'System.Windows.Media.Color'。存在显式转换(是你 错过演员?)
答案 0 :(得分:2)
如果没有更具体的信息,包括您正在使用的ColorPicker
类型的详细信息(WPF中没有这样的内置类......可能是您使用的是众多第三方选项中的一个),这是不可能的要确定你的问题是什么。
但是根据错误消息,似乎SelectedColor
属性被声明为Nullable<Color>
(即Color?
),当然正如错误所说,但没有隐式转换从Nullable<Color>
到Color
,您可以使用强制转换明确转换:
System.Windows.Media.Color c = (System.Windows.Media.Color)_clpicker.SelectedColor;
或者,您可以使用Value
属性:
System.Windows.Media.Color c = _clpicker.SelectedColor.Value;
同样,没有更多细节,我们不清楚为什么SelectedColor
属性是可以为空的类型。虽然在您尝试此分配的时间点,但实际值可能是null
。在这种情况下,编译器错误告诉您一些非常重要的事情:您没有采取任何措施处理null
案例。
如果SelectedColor
属性的值为null
,则上述两个选项都会抛出异常。
有多种方法可以处理null
值,但最简单的方法是让Nullable<T>
类型为您执行此操作:
System.Windows.Media.Color c = _clpicker.SelectedColor.GetValueOrDefault();
然后,如果SelectedColor
属性的值为null
,则c
变量将被分配System.Windows.Media.Color
的默认值(即黑色)。如果您愿意,可以将其他默认值传递给GetValueOrDefault()
方法,如果原始值为null
,则会返回该值。