Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

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.

System.Object
  Tutte le classi, le strutture, le enumerazioni e tutti i delegati.

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

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

Il tipo Object espone i seguenti membri.

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreObjectInizializza una nuova istanza della classe Object.
In alto

  NomeDescrizione
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreEquals(Object, Object)Determina se le istanze dell'oggetto specificate sono considerate uguali.
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreFinalize 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.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetHashCode Funge da funzione hash per un particolare tipo.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreGetType Ottiene il Type dell'istanza corrente.
Metodo protettoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente.
Metodo pubblicoMembro staticoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreReferenceEqualsDetermina se le istanze di Object specificate rappresentano la stessa istanza.
Metodo pubblicoSupportato da XNA FrameworkSupportato da Libreria di classi portabileSupportato in .NET per applicazioni Windows StoreToString Restituisce una stringa che rappresenta l'oggetto corrente.
In alto

In genere, nei linguaggi non è necessario che una classe dichiari l'eredità da Object, perché questa è implicita.

Poiché tutte le classi di .NET Framework derivano da Object, ogni metodo definito nella classe Object è disponibile in tutti gli oggetti del sistema. Le classi derivate possono eseguire ed eseguono l'override di alcuni dei seguenti metodi:

  • Equals - consente il confronto tra oggetti.

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

  • GetHashCode - genera un numero corrispondente al valore dell'oggetto con il quale supportare la tabella hash.

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

Considerazioni sulle prestazioni

Se si progetta una classe, quale ad esempio una raccolta in grado di gestire qualsiasi tipo di oggetto, è possibile creare membri della classe che accettano istanze della classe Object. I processi di boxing e unboxing di un tipo incidono tuttavia sulle prestazioni. Se si è certi che la classe dovrà gestire frequentemente determinati tipi di valore, si può adottare una delle due soluzioni illustrate di seguito per ridurre al minimo l'incidenza del boxing.

  • Creare un metodo generale che accetta un tipo Object e un gruppo di overload di metodo di tipo specifico che accetta ogni tipo di valore di cui si prevede una gestione frequente da parte della classe. Se esiste un metodo specifico per il tipo che accetta il tipo di parametro della chiamata, non si verifica il boxing e viene richiamato il metodo specifico per il tipo. Se non esiste un argomento del metodo che corrisponde al tipo di parametro della chiamata, viene eseguito il boxing del parametro e viene invocato il metodo generale.

  • Progettare il proprio tipo e i relativi membri per utilizzare i generics. In Common Language Runtime, quando si crea un'istanza della classe e si specifica un argomento di tipo generico, viene creato un tipo generico chiuso. Il metodo generico è specifico per il tipo e può essere richiamato senza procedere al boxing del parametro della chiamata.

Sebbene sia a volte necessario sviluppare classi generiche che accettano e restituiscono tipi Object, è possibile migliorare le prestazioni fornendo anche una classe specifica del tipo per gestire un tipo utilizzato di frequente. Fornendo ad esempio una classe specifica per l'impostazione e il recupero di valori booleani, viene eliminata la necessità della conversione boxing e unboxing dei valori booleani.

Nell'esempio riportato di seguito viene definito un tipo Point derivato dalla classe Object e viene eseguito l'override di molti dei metodi virtuali della classe Object. Nell'esempio viene illustrata inoltre la procedura di chiamata per molti metodi statici e istanze della classe Object.


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)
//


.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. I membri di istanza, invece, non sono necessariamente thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft