On 1 abr, 23:43, Daniel Mota <
danielmota.produ...@gmail.com> wrote:
> no caso de mudanças de tipo, existe uma forma "padrão" de se converter
> QUALQUER tipo A em QUALQUER tipo B (desde q se faça sentido, claro)
Essa é uma questão maneira.
Em primeiro lugar, um pouco de rigor ajuda a pensar: não faz sentido
falar em converter um tipo A em um tipo B, já que um _tipo_ é um
elemento estrutural de um programa, e não um elemento dinâmico.
Isso é verdade em linguagens como C, C++ e C#, que são fortemente
tipadas.
Faz sentido falar em converter um objeto a, originalmente de um tipo
A, a um tipo B. Conversão é uma operação, e seu operando é um _valor_.
Assim sendo, vamos pensar nessa expressão de conversão, em C# para
manter o contexto:
A a = new A(...);
B b = (B)a;
Existe uma forma padrão de converter QUALQUER A em QUALQUER B desta
forma? Não.
Nem mesmo se "faz sentido"? Bem. O que é "faz sentido"?
Se "faz sentido" é a mesma coisa que "obedece às regras de conversão
da linguagem de programação", então a resposta é sim.
Se "faz sentido" é a mesma coisa que "faz sentido na minha cabeça",
então a resposta é não.
Nesse último caso, as linguagens de programação oferecem um
maravilhoso recurso para realizar os nossos desejos: a função.
Nós, os programadores, transformamos o "faz sentido" em uma função que
recebe um valor do tipo A e retorna um valor do tipo B, e pronto!
Assim, quando "faz sentido" é a mesma coisa que "eu sei como escrever
uma função que converteria isso", então a resposta é: vá escrever a
tal função.
A a = new A(...);
B b = a.ConvertToB();
E pronto!
Linguagems como C++ e C# tem, além disso, funções especiais chamadas
"construtores" que tornam a notação mais interessante, na opinião de
alguns. Quando a sua função de conversão é na realidade um construtor,
o resultado final será um pouco diferente.
A a = new A(...);
B b = new B(a);
E pronto!
A conveniência de cada uma dessas alternativas é determinada pelas
circunstâncias; se você pode modificar A; se pode modificar B; se a
informação pública oferecida por A e/ou B é suficiente; etc.
--
P.