Object Classe
TOC
Comprimi il sommario
Espandi il sommario
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
  Tutte le classi, le strutture, le enumerazioni e tutti i delegati.

[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.

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

Poiché tutte le classi in .NET Framework sono derivate da Object, ogni metodo definito nel 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 un oggetto venga recuperato automaticamente.

  • 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 della classe che accettino le istanze della Object classe. Tuttavia, il processo di conversione boxing e unboxing di un tipo comporta una riduzione delle prestazioni. Se si conosce che la nuova classe dovrà gestire frequentemente determinati tipi di valore è possibile utilizzare una delle 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 del metodo specifico del tipo che accetta ogni tipo di valore si prevede che la classe per gestire frequentemente. Se esiste un metodo specifico del tipo che accetta il tipo di parametro di chiamata, si verifica alcun boxing e viene richiamato il metodo specifico del tipo. Se è presente alcun argomento del 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 è specifica del tipo e può essere richiamato senza eseguirne il boxing del parametro della chiamata.

Sebbene talvolta è 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 utilizzato di frequente. Ad esempio, fornendo una classe che è specifica di impostazione e recupero di valori booleani, viene eliminata la necessità di conversione boxing e unboxing valori booleani.

Nell'esempio seguente definisce un tipo di punto derivato dalla Object classe ed esegue l'override di molti dei metodi virtuali della Object classe. Inoltre, nell'esempio viene illustrato come chiamare il metodo statico numerosi metodi di istanza della 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 4.5
.NET Framework
Disponibile da 1.1
Portable Class Library
Supportato in: portable .NET platforms
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:
© 2016 Microsoft