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

Best practices for returning a Color.FromArgb when given an int that may be null C#

我只是好奇在我目前的情况下会有什么最佳实践解决方案。我有一个以 ARGB 整数形式存储颜色的数据库,但我允许它可以为空,因为有时可能不需要指定颜色。使用 Entity Framework,我生成了一个带有 ColorArgb 属性 的 class,用于访问 returns 和 int 的列,正如预期的那样。我还手动添加了另一个 属性,颜色,return 是一个 System.Drawing.Color 对象。颜色 属性 几乎只是介于两者之间,因此我可以以更自然的方式与生成的 class 进行交互。设置很简单:

ColorArgb = value.ToArgb();

不过,得到更有趣一点。这是我目前所拥有的:

return ColorArgb == null ? Color.Empty : Color.FromArgb(ColorArgb ?? 0);

如您所见,我想保持这个 class 不需要颜色的想法,所以我 return Color.Empty 当基础 ARGB 值为 null 时,但是永远不会到达空合并运算符的右侧。我已经保证该值不为空,但我不知道如何以最佳实践形式明确告诉编译器。不是很严重的问题,但我想学习。因此,非常感谢所有帮助。

编辑:ColorArgb 的类型为 System.Nullable<int>

如果您知道该值不为空,则不必使用空合并运算符。而是使用 ColorArgb.Value:

return ColorArgb == null ? Color.Empty : Color.FromArgb(ColorArgb.Value);

如果您需要黑色作为零整数值,可以使用更简洁的方法。

    return Color.FromArgb(ColorArgb.GetValueOrDefault());

否则要检查可为空的整数,您应该检查 .HasValue 属性 而不是像这样进行空比较。

    return ColorArgb.HasValue ? Color.FromArgb(ColorArgb.Value) : Color.Empty;