Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe Object

 

Supporta tutte classi della gerarchia di classi .NET Framework e fornisce servizi di basso livello alle classi derivate. Questa è la principale classe base di tutte le classi di .NET Framework e rappresenta la radice della gerarchia dei tipi.

Per esaminare il codice sorgente di .NET Framework per questo tipo, vedere il Reference Source.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
   Ogni classe, struttura, enumerazione e delegato.

[SerializableAttribute]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
[ComVisibleAttribute(true)]
public class Object

NomeDescrizione
System_CAPS_pubmethodObject()

Inizializza una nuova istanza della classe Object.

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

System_CAPS_pubmethodSystem_CAPS_staticEquals(Object, Object)

Determina se le istanze dell'oggetto specificate sono considerate uguali.

System_CAPS_protmethodFinalize()

Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection.

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

System_CAPS_pubmethodSystem_CAPS_staticReferenceEquals(Object, Object)

Determina se le istanze di Object specificate rappresentano la stessa istanza.

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

System_CAPS_noteNota

Per visualizzare il codice sorgente di .NET Framework per questo tipo, vedere il Reference Source. È possibile esplorare il codice sorgente online, scaricare i riferimenti per la visualizzazione offline e scorrere le origini (inclusi aggiornamenti e patch) durante l'esecuzione del debug. see instructions.

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

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

  • Equals-Supporta i confronti tra oggetti.

  • Finalize-Esegue operazioni di pulizia prima che venga recuperato automaticamente un oggetto.

  • GetHashCode-Genera un numero corrispondente al valore dell'oggetto per supportare l'utilizzo di una tabella hash.

  • ToString-Produce una stringa di testo leggibile che descrive un'istanza della classe.

Se si progetta una classe, ad esempio una raccolta, che deve gestire qualsiasi tipo di oggetto, è possibile creare membri di classe che le istanze di accettano la Object classe. Tuttavia, il processo di conversione boxing e unboxing di un tipo comporta un calo delle prestazioni. Se si conosce che la nuova classe dovrà gestire frequentemente determinati tipi di valore è possibile utilizzare uno dei due strategie per ridurre al minimo il costo della conversione boxing.

  • Creare un metodo generico che accetta un Object tipo e un set di overload di metodo specifico del tipo che accettano di ogni tipo di valore si prevede che la classe per gestire frequentemente. Se è presente un metodo specifico del tipo che accetta il tipo di parametro di chiamata, nessuna conversione boxing viene eseguita e viene richiamato il metodo specifico del tipo. Se è presente alcun argomento di metodo che corrisponde al tipo di parametro di chiamata, il parametro è di tipo boxed e viene richiamato il metodo generico.

  • Progettare il tipo e i relativi membri per utilizzare i generics. Common language runtime crea un tipo generico chiuso quando si crea un'istanza della classe e specificare un argomento di tipo generico. Il metodo generico è specifico del tipo e può essere richiamato senza eseguirne il boxing del parametro della chiamata.

Anche se in alcuni casi è necessario sviluppare classi generiche che accettano e restituiscono Object tipi, è possibile migliorare le prestazioni fornendo anche una classe specifica del tipo per gestire un tipo usato di frequente. Fornisce una classe specifica di impostazione e recupero di valori booleani, ad esempio, consente di eliminare il costo della conversione boxing e unboxing valori booleani.

L'esempio seguente definisce un tipo di punto derivato il Object classe ed esegue l'override di molti dei metodi virtuali di Object classe. Inoltre, nell'esempio viene illustrato come chiamare numerosi statico metodi di istanza del Object classe.

using System;

// The Point class is derived from System.Object.
class Point 
{
    public int x, y;

    public Point(int x, int y) 
    {
        this.x = x;
        this.y = y;
    }

    public override bool Equals(object obj) 
    {
        // If this and obj do not refer to the same type, then they are not equal.
        if (obj.GetType() != this.GetType()) return false;

        // Return true if  x and y fields match.
        Point other = (Point) obj;
        return (this.x == other.x) && (this.y == other.y);
    }

    // Return the XOR of the x and y fields.
    public override int GetHashCode() 
    {
        return x ^ y;
    }

    // Return the point's value as a string.
    public override String ToString() 
    {
        return String.Format("({0}, {1})", x, y);
    }

    // Return a copy of this point object by making a simple field copy.
    public Point Copy() 
    {
        return (Point) this.MemberwiseClone();
    }
}

public sealed class App {
    static void Main() 
    {
        // Construct a Point object.
        Point p1 = new Point(1,2);

        // Make another Point object that is a copy of the first.
        Point p2 = p1.Copy();

        // Make another variable that references the first Point object.
        Point p3 = p1;

        // The line below displays false because p1 and p2 refer to two different objects.
        Console.WriteLine(Object.ReferenceEquals(p1, p2));

        // The line below displays true because p1 and p2 refer to two different objects that have the same value.
        Console.WriteLine(Object.Equals(p1, p2));

        // The line below displays true because p1 and p3 refer to one object.
        Console.WriteLine(Object.ReferenceEquals(p1, p3));

        // The line below displays: p1's value is: (1, 2)
        Console.WriteLine("p1's value is: {0}", p1.ToString());
    }
}

// This code example produces the following output:
//
// False
// True
// True
// p1's value is: (1, 2)
//

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

Statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Membri di istanza non sono garantiti come thread-safe.

Torna all'inizio
Mostra: