我很好奇我的现状是什么样的最佳实践解决方案。我有一个数据库存储ARGB整数形式的颜色,但我允许它可以为空,因为有时可能不需要指定颜色。使用Entity Framework,我有一个带有ColorArgb属性的生成类,用于访问返回的列和int,如预期的那样。我还手动添加了另一个返回System.Drawing.Color对象的属性Color。 Color属性几乎只是介于两者之间,因此我可以以更自然的方式与生成的类进行交互。设置非常简单:
ColorArgb = value.ToArgb();
然而,获得更有趣。这是我到目前为止所做的:
return ColorArgb == null ? Color.Empty : Color.FromArgb(ColorArgb ?? 0);
正如你所看到的,我想保持这个类不需要Color的想法,所以当底层ARGB值为null时返回Color.Empty,但是空合并运算符的右边是从不到达。我保证该值不为null,但我不知道如何以最佳实践形式明确告诉编译器。这不是一个严重的问题,但我想学习。因此,非常感谢所有帮助。
编辑:ColorArgb的类型为System.Nullable<int>
答案 0 :(得分:2)
如果你需要黑色的零整数值,那么更干净的方法就是这样。
return Color.FromArgb(ColorArgb.GetValueOrDefault());
否则要检查可以为空的整数,你应该检查.HasValue属性而不是像这样的null比较。
return ColorArgb.HasValue ? Color.FromArgb(ColorArgb.Value) : Color.Empty;
答案 1 :(得分:0)
如果您知道该值不为null,则不必使用null coalescing运算符。而是使用ColorArgb.Value
:
return ColorArgb == null ? Color.Empty : Color.FromArgb(ColorArgb.Value);