(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Object-Klasse

Unterstützt sämtliche Klassen in der Hierarchie von .NET Framework-Klassen und stellt abgeleiteten Klassen Low-Level-Dienste zur Verfügung. Dies ist die allen Klassen von .NET Framework übergeordnete Basisklasse und stellt den Stamm der Typhierarchie dar.

System.Object
  Alle Klassen, Strukturen, Enumerationen und Delegaten.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

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

Der Object-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsObjectInitialisiert eine neue Instanz der Object-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.
Öffentliche MethodeStatischer MemberUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEquals(Object, Object)Stellt fest, ob die angegebenen Objektinstanzen als gleich betrachtet werden.
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeFungiert als die Standardhashfunktion.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Type der aktuellen Instanz ab.
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsMemberwiseCloneErstellt eine flache Kopie des aktuellen Object.
Öffentliche MethodeStatischer MemberUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsReferenceEqualsStellt fest, ob die angegebenen Object-Instanzen dieselbe Instanz sind.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.
Zum Seitenanfang

Programmiersprachen benötigen i. d. R. keine Klasse zur Deklaration der Vererbung von Object, da die Vererbung implizit ist.

Da alle Klassen in .NET Framework von Object abgeleitet sind, steht jede in der Object-Klasse definierte Methode in allen Objekten im System zur Verfügung. Abgeleitete Klassen besitzen und nutzen die Möglichkeit, einige dieser Methoden zu überschreiben. Dazu gehören folgende Methoden:

  • Equals – Unterstützt Vergleiche zwischen Objekten.

  • Finalize – Führt vor der automatischen Freigabe eines Objekts Bereinigungsaktionen durch.

  • GetHashCode – Generiert zur Unterstützung einer Hashtabelle eine Zahl, die dem Wert des Objekts entspricht.

  • ToString – Stellt eine lesbare Zeichenfolge her, die eine Instanz der Klasse beschreibt.

Überlegungen zur Leistung

Wenn Sie eine Klasse (z. B. eine Auflistung) entwerfen, die jeden Objekttyp behandeln muss, können Sie Klassenmember erstellen, die Instanzen der Object-Klasse akzeptieren. Das Boxing und Unboxing von Typen ist jedoch leistungsintensiv. Wenn Sie wissen, dass die neue Klasse häufig bestimmte Werttypen behandeln wird, können Sie eines von zwei Verfahren zur Minimierung des Kostenaufwands für Boxing anwenden.

  • Erstellen Sie eine häufige Methode, die einen Object-Typ akzeptiert, und einen Satz typspezifischer Methodenüberladungen, die jeden Werttyp akzeptieren, den Sie der Klasse, erwarten, um häufig zu behandeln. Wenn eine typabhängige Methode vorhanden ist, die den aufrufenden Parametertyp akzeptiert, entfällt das Boxing, und die typabhängige Methode wird aufgerufen. Wenn es in der Methode kein Argument gibt, das mit dem aufrufenden Parametertyp übereinstimmt, wird der Parameter geschachtelt, und die allgemeine Methode wird aufgerufen.

  • Entwerfen Sie den Typ und seine Member, um Generika zu verwenden. Wenn Sie eine Instanz der Klasse erstellen und ein Argument von generischem Typ angeben, erstellt die Common Language Runtime einen geschlossenen generischen Typ. Die generische Methode ist typabhängig und kann aufgerufen werden, ohne den aufrufenden Parameter mittels Boxing zu verpacken.

Gelegentlich kann es erforderlich sein, allgemeine Klassen zu entwickeln, die Object-Typen annehmen und zurückgeben. Sie können jedoch die Leistung verbessern, indem Sie auch eine typspezifische Klasse zum Behandeln eines häufig verwendeten Typs bereitstellen. Wenn Sie beispielsweise eine Klasse speziell für das Festlegen und Abrufen von booleschen Werten bereitstellen, entfällt der Aufwand des Boxing und Unboxing von booleschen Werten.

Das folgende Beispiel definiert einen Punkttyp, der von der Object-Klasse abgeleitet ist, und überschreibt viele der virtuellen Methoden der Object-Klasse. Außerdem wird anhand des Beispiels veranschaulicht, wie viele der statischen Methoden und Instanzenmethoden der Object-Klasse aufgerufen werden.


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

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt 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 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Öffentliche statische (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanz-Membern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft