terça-feira, 14 de agosto de 2007

Uma outra forma de TypeCasting.

Provavelmente você já fez um TypeCasting, como o da linha abaixo:

DataSet ds = (DataSet) dataGridView1.DataSource;

Na forma acima, se o valor que está sendo convertido, no caso o dataGridView1.DataSource, for nulo ou não for um DataSet, será gerado um erro. Você teria que fazer um tratamento antes de efetuar o cast, usando o operador is para verificar se é realmente do tipo esperado:

if (dataGridView1.DataSource != null && dataGridView1.DataSource is DataSet)
{
DataSet ds = (DataSet) dataGridView1.DataSource;
}

Uma outra forma é fazer o cast com o operador as. Com esse operador, se o valor convertido for nulo ou não for do tipo esperado, será retornado nulo. Com isso, o código acima poderia ser escrito assim:

DataSet ds = dataGridView1 as DataSet;
if (ds != null)
...

Além disso, por não usar parenteses, pode deixar a sintaxe um pouco mais limpa, como no exemplo abaixo:

DataTable tbl = ((DataSet) dataGridView1.DataSource).Tables[0];

poderia ser representada com um conjunto de parênteses a menos usando o as :

DataTable tbl = (dataGridView1.DataSource as DataSet).Tables[0];

Nenhum comentário: