我有某些情况(例如,一个自定义类来保存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)
否则,这两种选择之间实际上没有性能差异.