C #?: Operador Condicional

Eu tenho este extrato do código-fonte C # 2.0:

object valueFromDatabase;
decimal result;
valueFromDatabase = DBNull.Value;

result = (decimal)(valueFromDatabase != DBNull.Value ? valueFromDatabase : 0);
result = (valueFromDatabase != DBNull.Value ? (decimal)valueFromDatabase : (decimal)0);

A primeira avaliação de resultado lança umInvalidCastException enquanto o segundo não. Qual é a diferença entre esses dois?

questionAnswers(8)

yourAnswerToTheQuestion