Partager via


Classe System.Object

Cet article fournit des remarques supplémentaires à la documentation de référence de cette API.

La Object classe est la classe de base ultime de toutes les classes .NET ; il s’agit de la racine de la hiérarchie de types.

Étant donné que toutes les classes dans .NET sont dérivées de Object, chaque méthode définie dans la Object classe est disponible dans tous les objets du système. Les classes dérivées peuvent remplacer certaines de ces méthodes, notamment :

  • Equals: prend en charge les comparaisons entre les objets.
  • Finalize: effectue des opérations de nettoyage avant qu’un objet soit récupéré automatiquement.
  • GetHashCode: génère un nombre correspondant à la valeur de l’objet pour prendre en charge l’utilisation d’une table de hachage.
  • ToString: fabrique une chaîne de texte lisible par l’homme qui décrit une instance de la classe.

Les langages ne nécessitent généralement pas de classe pour déclarer un héritage de Object, car l’héritage est implicite.

Considérations relatives aux performances

Si vous concevez une classe, telle qu’une collection, qui doit gérer n’importe quel type d’objet, vous pouvez créer des membres de classe qui acceptent des instances de la Object classe. Cependant, le processus de boxing et de déboxing d’un type a un coût en termes de performances. Si vous savez que votre nouvelle classe traitera fréquemment certains types de valeurs, vous pouvez utiliser l’une des deux tactiques suivantes pour minimiser le coût du boxing.

  • Créez une méthode générale qui accepte un Object type et un ensemble de surcharges de méthode spécifiques au type qui acceptent chaque type de valeur que vous attendez à ce que votre classe gère fréquemment. Si une méthode spécifique au type existe et accepte le type de paramètre d’appel, aucun boxing ne se produit et la méthode spécifique au type est invoquée. S’il n’existe aucun argument de méthode qui correspond au type de paramètre appelant, le paramètre est boxé et la méthode générale est appelée.
  • Concevez votre type et ses membres pour utiliser des génériques. Le Common Language Runtime crée un type générique fermé lorsque vous créez une instance de votre classe et spécifiez un argument de type générique. La méthode générique est spécifique au type et peut être invoquée sans boxing du paramètre d’appel.

Bien qu’il soit parfois nécessaire de développer des classes à usage général qui acceptent et retournent Object des types, vous pouvez améliorer les performances en fournissant également une classe spécifique au type pour gérer un type fréquemment utilisé. Par exemple, fournir une classe spécifique à la définition et à l’obtention de valeurs booléennes élimine le coût de l’encapsulation et du déballage des valeurs booléennes.