在C#中使用可空的SQL数据的最佳实践是什么?

时间:2011-04-04 17:06:51

标签: c# sql casting nullable

我倾向于这样做,例如接受整数的方法:

DoSomethingWithThisInt((int)dbObj.nullableInteger);

但是我通常也会确保这个代码永远不会发生,除非它有一个值,有时这意味着我必须首先检查null,这需要更多行代码。

有没有更好的方法,或者我只是通过简单的方式做到这一点?

2 个答案:

答案 0 :(得分:5)

如果您已在相关代码行之前检查过null,则只需使用

即可
dbObj.nullableInteger.Value

与演员相反。

例如,如果默认值也足够(例如0表示整数,false表示布尔值等),那么你可以省略空检查并简单地利用

doObj.nullableInteger.GetValueOrDefault()

答案 1 :(得分:3)

语法基本上有两种选择。使用Nullable<T>类型的属性,如下所示:

if (dbObj.nullableInteger.HasValue)
{
    DoSomethingWithThisInt(dbObj.nullableInteger.Value);
}

或使用C#语言提供的语法糖,这意味着同样的事情:

if (dbObj.nullableInteger != null)
{
    DoSomethingWithThisInt((int)dbObj.nullableInteger);
}

你使用哪一个只是一个偏好的问题;我个人更喜欢后者。