{ Cliente outroCliente = (Cliente) obj; }
{ Cliente outroCliente = (Cliente) obj; }
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.