Normalmente, los lenguajes no precisan una clase para declarar la herencia de Object porque está implícita.
Dado que todas las clases de .NET Framework se derivan de Object, todos los métodos definidos en la clase Object están disponibles en todos los objetos del sistema. Las clases derivadas pueden reemplazar, y de hecho reemplazan, algunos de estos métodos, entre los que se incluyen los siguientes:
-
Equals: admite comparaciones entre objetos.
-
Finalize: realiza operaciones de limpieza antes de que un objeto sea reclamado automáticamente.
-
GetHashCode: genera un número que se corresponde con el valor del objeto que admite el uso de una tabla hash.
-
ToString: crea una cadena de texto legible para el usuario que describe una instancia de la clase.
Consideraciones sobre el rendimiento
Si está diseñando una clase, como una colección, que deba controlar cualquier tipo de objeto, puede crear miembros de clase que acepten instancias de la clase Object. Sin embargo, el proceso de aplicar las conversiones boxing y unboxing a un tipo implica una reducción del rendimiento. Si sabe que la nueva clase controlará con frecuencia ciertos tipos de valor, hay dos procedimientos para minimizar el costo de aplicar la conversión boxing.
Uno de los procedimientos es crear un método general que acepte un tipo Object, y un conjunto de sobrecargas de método específicas del tipo que acepten cada uno de los tipos de valor que se espera que la clase controle con frecuencia. Si existe un método específico de tipos que acepte el tipo de parámetro de la llamada, no se produce ninguna conversión boxing y se llama al método específico de tipos. Si no hay ningún argumento de método que coincida con el tipo de parámetro de la llamada, el parámetro se somete a la conversión boxing y se llama al método general. Este procedimiento produce métodos que son compatibles con CLS.
El otro procedimiento es diseñar la clase y sus métodos para que utilicen genéricos. Common Language Runtime crea un tipo genérico cerrado cuando se crea una instancia de la clase y se especifica un argumento de tipo genérico. El método genérico es específico del tipo y se puede invocar sin aplicar la conversión boxing al parámetro de llamada. Este procedimiento produce métodos que no son compatibles con CLS en la versión 2.0 de .NET Framework.