Maurilio,
O Cast serve para dizer que o valor de um objeto é de determinado tipo. Por exemplo, digamos que você crie uma variável dessa forma:
object variavel = 10;
Nesse caso o valor dessa variável é um inteiro, certo?! Mas para o compilador essa variável é do tipo object
, mesmo que o valor dessa seja int
. Digamos que você queira utilizar essa variável como inteiro, dai você usa o Cast, que apenas diz para o compilador que o conteúdo dessa variável é do tipo que você está informando:
int variavelInt = (int)variavel;
Isso não irá gerar erro de compilação. Mas porque você não pode usar direto, sem fazer o Cast? Justamente porque o compilador entende que a variável é object
e não um inteiro.
Esse pequeno exemplo serve para todos os outros tipos de objetos.
Então, quando é que você usa o Convert? Nesse caso é para realmente converter uma coisa em outra, por exemplo, uma string em um inteiro:
int inteiro = Convert.ToInt32("10");
Nesse caso a string contém o texto "10", mas ainda é um texto, não é um inteiro realmente e para usar o valor "10" como inteiro dai você converte o valor.
Espero que isso te ajude a entender.
Abraço.