Оператор '??' не может применяться к операндам типа 'string' и 'System.DBNull'

У меня есть следующий код С#:

sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? DBNull.Value);

Но он выдает следующую ошибку компиляции:

Оператор ?? не может применяться к операндам типа string и System.DBNull

Почему компилятор не разрешает этот синтаксис?

Ответы

Ответ 1

Оба операнда должны быть объектами. Использовать явное выражение:

(object)table.Value ?? DBNull.Value;

Ответ 2

Нет автоматического преобразования между string и System.DBNull, поэтому вам нужно указать тип, который вы хотите явно, добавив приведение к object:

sqlCommandObject.Parameters.AddWithValue("@Parameter",
                                         table.Value ?? (object)DBNull.Value);

Ответ 3

Это потому, что между string и System.DBNull нет неявного преобразования.