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]


segunda-feira, 4 de fevereiro de 2008

Fundamento de Tipos

Todos os tipos são derivados de System.Object

• São iguais:

//Forma implicita
class Empregado{ ... }

//Forma Explicita
class Empregado: System.Object { ... }



• Metodos publicos System.Object

  • Equals : Compara Objetos;
  • GetHashCode : Código hash do valor do Objeto;
  • ToString : Por padrão, retorna nome completo do tipo;
  • GetType : Identifica o tipo do objeto.



• CLT obriga o uso do operador new para criar objetos.

Empregado e = new Empregado ("Parametro do Construtor");

[ Detalhes do funcionamento: pag. 134 e 135 do livro. ]



• Metodos Protegidos do System.Object

  • MemberwiseClone : (não-virtual) Cria nova instancia do tipo e clona campoas do novo objeto iguais aos campos do objeto this
  • Finalize : (virtual) É chamado quando o coletor de lixo identifica o objeto como lixo, mas antes da memoria do objeto ser reivindicada.

Apresentação

Ola a todos,

Montei este blog para estudar a linguagem de programação C# e o .NET Framework, baseado no livro:

Programação Aplicada com Microsoft .NET Framework
de Jeffrey Richter

Estou seguindo o livro e realizando minhas anotações em forma de tópicos para estudo. Caso achar conveniente, tenha o livro em mãos para um melhor aproveitamento.
Você pode comprar o livro na loja submarino, seguindo este link.

Qualquer dúvida ou sugestão será bem-vinda!

Abraço a todos e espero que aproveitem o conteudo deste blog.