给定一个可能为null的int时返回Color.FromArgb的最佳实践C#

时间:2016-04-25 05:35:12

标签: c# entity-framework int nullable system.drawing.color

我很好奇我的现状是什么样的最佳实践解决方案。我有一个数据库存储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>

2 个答案:

答案 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);