Я не знаю, что базы данных библиотеки вы используете, но большинство библиотек построены на вершине ADO.NET не всегда используют .NET null
ссылку, чтобы указать значение SQL NULL
. Это то, что DBNull
для (доступ через DBNull.Value
). Вы можете проверить для SQL NULL
с помощью оператора Object Reference Equality ==
или Object.ReferenceEquals
.
Ваш код довольно запутанный. Я предлагаю вам попробовать это вместо:
Object value = row[8]; // I don't know what `row` is, change this to be a more specific type if there are any type-safety constraints on `row[8]`.
if(Object.ReferenceEquals(DBNull.Value, value)) {
// value is SQL NULL
}
else {
// value is not SQL NULL, but it is not necessarily a Decimal value either
if(value is Decimal) {
return (Decimal)value; // you can't use the shorthand `as` operator with value-types like Decimal
}
}
включают фрагмент кода, а –
Что такое тип 'row'? – Dai
Столбец (по индексу 8) в строке, которую вы читаете, равен null. Вы не можете хранить нуль в десятичной системе. – Rob