给定可能为 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;
我只是好奇在我目前的情况下会有什么最佳实践解决方案。我有一个以 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;