Condividi tramite


Classe System.Object

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

La Object classe è la classe base finale di tutte le classi .NET, che è la radice della gerarchia dei tipi.

Poiché tutte le classi in .NET sono derivate da Object, ogni metodo definito nella Object classe è disponibile in tutti gli oggetti del sistema. Le classi derivate possono eseguire l'override di alcuni di questi metodi, tra cui:

  • Equals: supporta confronti tra oggetti.
  • Finalize: esegue operazioni di pulizia prima che un oggetto venga recuperato automaticamente.
  • GetHashCode: genera un numero corrispondente al valore dell'oggetto per supportare l'uso di una tabella hash.
  • ToString: produce una stringa di testo leggibile che descrive un'istanza della classe .

I linguaggi in genere non richiedono una classe per dichiarare l'ereditarietà perché Object l'ereditarietà è implicita.

Considerazioni sulle prestazioni

Se si progetta una classe, ad esempio una raccolta, che deve gestire qualsiasi tipo di oggetto, è possibile creare membri di classe che accettano istanze della Object classe. Tuttavia, il processo di conversione tramite boxing e unboxing comporta un costo in termini di prestazioni. Se si sa che la nuova classe gestirà spesso determinati tipi di valore, è possibile usare una delle due tattiche per ridurre al minimo il costo del boxare.

  • Creare un metodo generale che accetta un tipo Object, e un insieme di sovraccarichi di metodo specifici per tipo che accettano ogni tipo di valore che ci si aspetta gestisca frequentemente la classe. Se esiste un metodo specifico del tipo che accetta il tipo di parametro chiamante, non viene eseguita alcuna conversione boxing e viene richiamato il metodo specifico del tipo. Se non c'è alcun argomento del metodo che corrisponde al tipo del parametro chiamante, il parametro viene incapsulato e viene invocato il metodo generale.
  • Progettate il tipo e i relativi membri per utilizzare i generici. Common Language Runtime crea un tipo generico chiuso quando si crea un'istanza della classe e si specifica un argomento di tipo generico. Il metodo generico è specifico del tipo e può essere invocato senza eseguire il boxing del parametro chiamante.

Anche se a volte è necessario sviluppare classi per utilizzo generico che accettano e restituiscono Object tipi, è possibile migliorare le prestazioni fornendo anche una classe specifica del tipo per gestire un tipo usato di frequente. Ad esempio, fornire una classe specifica per impostare e ottenere valori Boolean elimina il costo del boxing e unboxing dei valori Boolean.