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 boxing e unboxing di un tipo comporta un costo delle prestazioni. Se si conosce la nuova classe gestirà spesso determinati tipi di valore, è possibile usare una delle due tattiche per ridurre al minimo il costo della conversione boxing.

  • Creare un metodo generale che accetta un Object tipo e un set di overload di metodi specifici del tipo che accettano ogni tipo di valore previsto per la gestione frequente della 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 esiste alcun argomento del metodo che corrisponde al tipo di parametro chiamante, il parametro viene sottoposto a boxing e viene richiamato il metodo generale.
  • Progettare il tipo e i relativi membri per usare i generics. 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 richiamato 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, se si specifica una classe specifica per l'impostazione e il recupero di valori booleani, si elimina il costo della conversione boxing e dei valori booleani unboxing.