我应该使用Guid和Guid.Empty还是可以为空的Guid?

我有某些情况(例如,一个自定义类来保存Sql参数),其中可能需要或可能不需要变量.传统上,我总是将这些类型定义为Guid?并在使用前使用myGuid.HasValue检查有效值.

当然,在实践中,我也可以使用常规Guid并使用myGuid == Guid.Empty执行有效值的检查.

为了提高可读性,我更喜欢第一次使用,因为它感觉更干净,但是如果有人可以建议一种方法是否比另一种更好(更快,更快或更正确),我将不胜感激.

解决方法:

如果参数在T-Sql端可以为null,那么我认为Guid吗?更自然.特别是当与ADO.NET参数化查询一起使用时,可空类型的值为null时,它们可以方便地转换为DBNull.Value.如果要使用Guid.Empty表示null,则需要检查该条件并将DBNull.Value显式传递给命令/查询.例如.:

command.Parameters.AddWithValue("@guid", myNullableGuid)     

command.Parameters.AddWithValue("@guid", 
    myGuid == Guid.Empty ? DBNull.Value : myGuid)    

否则,这两种选择之间实际上没有性能差异.

上一篇:颜色空间模型


下一篇:CodeGo.net>使用Expando对象时,如何使类型为可空