Tipos anuláveis são bons, mas apenas para tipos que não são anuláveis para começar.
Para tornar um tipo "anulável", acrescente um ponto de interrogação ao tipo, por exemplo:
int? value = 5;
Eu também recomendaria usar o "
as
" em vez de conversão. Você só pode usar a palavra-chave "as" em tipos anuláveis, portanto, certifique-se de estar lançando coisas que já são anuláveis (como strings) ou use tipos anuláveis como mencionado acima. O raciocínio para isso é - Se um tipo for anulável, o "
as
" palavra-chave retornanull
se um valor forDBNull
. - É um pouco mais rápido do que lançar, embora apenas em alguns casos. Isso por si só nunca é uma razão boa o suficiente para usar
as
, mas juntamente com o motivo acima, é útil.
Eu recomendo fazer algo assim
DataRow row = ds.Tables[0].Rows[0];
string value = row as string;
No caso acima, se
row
volta como DBNull
, então value
se tornará null
em vez de lançar uma exceção. Esteja ciente de que, se sua consulta de banco de dados alterar as colunas/tipos retornados, usando as
fará com que seu código falhe silenciosamente e torne os valores simples null
em vez de lançar a exceção apropriada quando dados incorretos são retornados, portanto, é recomendável que você tenha testes em vigor para validar suas consultas de outras maneiras para garantir a integridade dos dados à medida que sua base de código evolui.