3
respostas

Não entendi o funcionamento do Casting, alguém pode me ajudar?

{ Cliente outroCliente = (Cliente) obj; }

3 respostas

Quando você faz casting como no seu caso de um obj para uma classe, você "tipa" a informação convertendo ela para um novo tipo.

Como no seu caso obj parece ser do tipo Object e com cast vira tipo Cliente armazenado na variável outroCliente.

O casting é bem útil em outros casos como por exemplo converter string em int. Sobre casting gosto muito deste link: https://www.dotnetperls.com/cast

Deve-se ter cuidado e analisar as possibilidades nos casts realizados para não receber uma exception: https://www.dotnetperls.com/invalidcastexception

Só incrementando as informações do Jozimar.

Na questão de performance não se muda muita coisa em relação ao casting (na verdade só é mudado o tipo da variável de referência).

Porém, é necessário tomar cuidado com os erros que podem ocorrer em "run-time".

Segue abaixo um link interessante do stackoverflow sobre casting no C#:

http://stackoverflow.com/questions/1289664/the-cost-of-casting

O casting serve para "traduzir" um parâmetro.

Exemplo: int value = (int)1.5; //-- atribui um valor 1

O valor armazenado em value que é um int vai ser a "tradução" do 1.5 ( double ) para int, que terá como resultado 1

No caso dos objetos, vai depender de uma série de fatores para definir se é um casting válido ou não, no caso do exemplo é possível pois é uma classe filha passada como parâmetro no lugar da original.