terça-feira, 5 de fevereiro de 2008

Conversão (casting) entre tipos

• Para descobrir o tipo exato de um objeto, utiliza-se o método GetType. Como é um método não virtual, fica impossível um tipo simular outro tipo.
Ex.: O tipo Empregado não pode sobrescrever o GetType e faze-lo retornar tipo SpaceShuttle.

• É permitido converter um tipo para seus tipos base.

• Codigo a seguir demonstra conversão para tipos base e derivados

// C# - pag. 135

// Este tipo é implicitamente derivado de System.Object
class Empregado { ... }

class App
{
    public static void Main()
    {
        //Conversão não necessária, visto que Object é tipo base de Empregado.
        Object o = new Empregado();

        //Conversão necessária, visto que Empregado é derivado de Object
        Empregado e = (Object) o;
    }
}

• Em tempo de execução, CLR verifica e assegura que conversões sejam sempre relacionadas ao tipo real do objeto ou um de seus tipos base, caso contrário, não haveria segurança nenhuma de tipo, resultados seriam imprevisíveis com possibilidades de mau funcionamento da aplicação violando segurança por causa da capacidade dos tipo facilmente simular outro tipo.

• Portanto, segurança de tipo é aspecto extremamente importante do .NET Framework.

[Detalhes de funcionamento: pag. 136 do livro]


Nenhum comentário: