Los tipos anulables son buenos, pero solo para los tipos que no son anulables para empezar.
Para hacer que un tipo sea "anulable", agregue un signo de interrogación al tipo, por ejemplo:
int? value = 5;
También recomendaría usar "as
" palabra clave en lugar de conversión. Solo puede usar la palabra clave "as" en tipos que aceptan valores NULL, así que asegúrese de que está emitiendo cosas que ya aceptan valores NULL (como cadenas) o usa tipos que aceptan valores NULL como se mencionó anteriormente. El motivo de esto es
- Si un tipo es anulable, el "
as
" palabra clave devuelvenull
si un valor esDBNull
. - Es ligeramente más rápido que lanzar, aunque solo en ciertos casos. Esto por sí solo nunca es una buena razón para usar
as
, pero junto con el motivo anterior, es útil.
Recomiendo hacer algo como esto
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
En el caso anterior, si row
regresa como DBNull
, luego value
se convertirá en null
en lugar de lanzar una excepción. Tenga en cuenta que si su consulta de base de datos cambia las columnas o los tipos que se devuelven, usando as
hará que su código falle silenciosamente y hacer que los valores sean simples null
en lugar de generar la excepción adecuada cuando se devuelven datos incorrectos, por lo que se recomienda que realice pruebas para validar sus consultas de otras maneras para garantizar la integridad de los datos a medida que evoluciona su base de código.