2010-11-11 71 views

Respuesta

29

Ambos operandos deben ser objeto. Utilice conversión explícita:

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

Esto no es realmente correcto, la razón por la que ocurre el error de compilación no se debe a que ambos operandos a ?? Necesito ser objetos. Es que sin un molde explícito (proporcionado en la respuesta con (objeto)) debe haber un molde implícito disponible. Como no hay una conversión implícita entre cadena y System.DBNull, obtienes el error del compilador. –

+5

No intenté ser quisquilloso, solo me preocupaba que el autor (que dijo que sabía cómo eludir el error) pudiera irse pensando que ambos operandos a la ?? el operador siempre necesita ser un objeto. Su pregunta era * por qué * el compilador no le gusta esto no * cómo * lo arreglo. –

+1

@AndrewBarrett ¡Está bien! Como lo arreglas? :) – Axel

7

Es porque no hay una conversión implícita entre string y System.DBNull.

15

no hay conversión automática entre string y System.DBNull y por lo tanto es necesario especificar el tipo que desee de forma explícita mediante la adición de un yeso para object:

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