Как лучше всего работать с обнуляемыми данными SQL в C #? - PullRequest
0 голосов
/ 04 апреля 2011

Я склонен делать это, например, метод, который принимает целое число:

DoSomethingWithThisInt((int)dbObj.nullableInteger);

Однако я также обычно гарантирую, что этот код никогда не произойдет, если у него нет значения, иногда это означаетчтобы сначала проверить наличие нуля, который занимает больше строк кода.

Есть ли лучший способ, или я делаю это правильно, просто приведя?

Ответы [ 2 ]

5 голосов
/ 04 апреля 2011

Если вы уже проверили на ноль до рассматриваемой строки кода, вы можете просто использовать

dbObj.nullableInteger.Value

В отличие от приведения.

Если, например, значения по умолчанию также будут достаточны (например, 0 для целых чисел, false для логических значений и т. Д.), Тогда вы можете опустить нулевую проверку и просто использовать

doObj.nullableInteger.GetValueOrDefault()
3 голосов
/ 04 апреля 2011

В основном, есть два варианта синтаксиса. Либо используйте свойства типа Nullable<T>, например:

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

или используйте синтаксический сахар, предоставляемый языком C #, что означает то же самое:

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

Какой вы используете, это просто вопрос предпочтений; лично я предпочитаю последнее.

...