System.Object (clase)

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

La Object clase es la clase base definitiva de todas las clases de .NET; es la raíz de la jerarquía de tipos.

Dado que todas las clases de .NET se derivan de Object, todos los métodos definidos en la Object clase están disponibles en todos los objetos del sistema. Las clases derivadas pueden invalidar algunos de estos métodos, entre los que se incluyen:

  • Equals: admite comparaciones entre objetos.
  • Finalize: realiza operaciones de limpieza antes de que se recupere automáticamente un objeto.
  • GetHashCode: genera un número correspondiente al valor del objeto para admitir el uso de una tabla hash.
  • ToString: fabrica una cadena de texto legible que describe una instancia de la clase .

Los idiomas normalmente no requieren una clase para declarar la herencia porque Object la herencia es implícita.

Consideraciones de rendimiento

Si va a diseñar una clase, como una colección, que debe controlar cualquier tipo de objeto, puede crear miembros de clase que acepten instancias de la Object clase. Sin embargo, el proceso de conversión boxing y unboxing de un tipo conlleva un costo de rendimiento. Si sabe que la nueva clase controlará con frecuencia determinados tipos de valor, puede usar una de estas dos tácticas para minimizar el costo de la conversión boxing.

  • Cree un método general que acepte un Object tipo y un conjunto de sobrecargas de método específicas del tipo que acepte cada tipo de valor que espera que la clase controle con frecuencia. Si existe un método específico del tipo que acepta el tipo de parámetro de llamada, no se produce ninguna conversión boxing y se invoca el método específico del tipo. Si no hay ningún argumento de método que coincida con el tipo de parámetro de llamada, el parámetro se conversión boxing y se invoca el método general.
  • Diseñe el tipo y sus miembros para usar genéricos. Common Language Runtime crea un tipo genérico cerrado al crear una instancia de la clase y especificar un argumento de tipo genérico. El método genérico es específico del tipo y se puede invocar sin realizar conversión boxing en el parámetro de llamada.

Aunque a veces es necesario desarrollar clases de uso general que aceptan y devuelven Object tipos, también puede mejorar el rendimiento proporcionando también una clase específica de tipo para controlar un tipo usado con frecuencia. Por ejemplo, proporcionar una clase específica para establecer y obtener valores booleanos elimina el costo de conversión boxing y unboxing valores booleanos.