Classe System.Object
Este artigo fornece observações complementares à documentação de referência para essa API.
A Object classe é a classe base final de todas as classes .NET, é a raiz da hierarquia de tipos.
Como todas as classes no .NET são derivadas do Object, cada método definido na Object classe está disponível em todos os objetos no sistema. As classes derivadas podem e substituem alguns desses métodos, incluindo:
- Equals: Suporta comparações entre objetos.
- Finalize: Executa operações de limpeza antes que um objeto seja recuperado automaticamente.
- GetHashCode: Gera um número correspondente ao valor do objeto para dar suporte ao uso de uma tabela de hash.
- ToString: Fabrica uma cadeia de caracteres de texto legível por humanos que descreve uma instância da classe.
Os idiomas normalmente não exigem uma classe para declarar herança Object porque a herança está implícita.
Considerações sobre o desempenho
Se você estiver criando uma classe, como uma coleção, que deve manipular qualquer tipo de objeto, poderá criar membros de classe que aceitem instâncias da Object classe. No entanto, o processo de boxe e unboxing de um tipo tem um custo de desempenho. Se você sabe que sua nova classe frequentemente lida com certos tipos de valor, você pode usar uma das duas táticas para minimizar o custo do boxe.
- Crie um método geral que aceite um tipo e um Object conjunto de sobrecargas de método específico de tipo que aceite cada tipo de valor que você espera que sua classe manipule com frequência. Se existir um método específico de tipo que aceite o tipo de parâmetro de chamada, não ocorrerá boxing e o método específico do tipo será chamado. Se não houver nenhum argumento de método que corresponda ao tipo de parâmetro de chamada, o parâmetro será colocado em caixa e o método geral será chamado.
- Projete seu tipo e seus membros para usar genéricos. O Common Language Runtime cria um tipo genérico fechado quando você cria uma instância de sua classe e especifica um argumento de tipo genérico. O método genérico é específico do tipo e pode ser invocado sem encaixotar o parâmetro de chamada.
Embora às vezes seja necessário desenvolver classes de propósito geral que aceitem e retornem Object tipos, você pode melhorar o desempenho fornecendo também uma classe específica de tipo para lidar com um tipo usado com frequência. Por exemplo, fornecer uma classe específica para definir e obter valores booleanos elimina o custo de boxing e unboxing de valores booleanos.