Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Object-Klasse

 

Veröffentlicht: Juli 2016

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.

Informationen zum Durchsuchen des .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source.

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

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

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

NameBeschreibung
System_CAPS_pubmethodObject()

Initialisiert eine neue Instanz der Object-Klasse.

NameBeschreibung
System_CAPS_pubmethodEquals(Object^)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.

System_CAPS_pubmethodSystem_CAPS_staticEquals(Object^, Object^)

Stellt fest, ob die angegebenen Objektinstanzen als gleich betrachtet werden.

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird.

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

System_CAPS_pubmethodSystem_CAPS_staticReferenceEquals(Object^, Object^)

Stellt fest, ob die angegebenen Object-Instanzen dieselbe Instanz sind.

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

System_CAPS_noteHinweis

Die .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source. Sie können den Quellcode online Durchsuchen, Referenz für die Offlineanzeige herunterladen und schrittweise durchlaufen (inklusive Patches und Updates) während des Debuggens; see instructions.

Sprachen erfordern in der Regel keine Klasse zur Deklaration der Vererbung von Object , da die Vererbung implizit ist.

Da alle Klassen in .NET Framework abgeleitet sind Object, jede Methode definiert, die der Object Klasse steht in allen Objekten im System. Abgeleitete Klassen, und überschreiben Sie einigen dieser Methoden, einschließlich:

  • Equals– Unterstützt Vergleiche zwischen Objekten.

  • Finalize– Führt Bereinigungsvorgänge durch, bevor ein Objekt automatisch freigegeben wird.

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

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

Wenn Sie eine Klasse, z. B. eine Auflistung entwerfen, die jede Art von Objekt behandelt werden müssen, können Sie Klassenmember, die Instanzen von akzeptieren erstellen die Object Klasse. Der Prozess von Boxing und unboxing eines Typs birgt jedoch Kosten der Leistung. Wenn Sie wissen, dass die neue Klasse häufig bestimmte Werttypen behandelt, können Sie eine der beiden Taktiken Boxing begegnet verwenden.

  • Erstellen Sie eine allgemeine Methode, die akzeptiert ein Object Typ und einen Satz von typspezifische methodenüberladungen, die jeden Typ Sie erwarten, die Klasse akzeptieren dass, um häufig zu behandeln. Wenn eine typspezifischen Methode vorhanden, das den Parametertyp des aufrufenden akzeptiert ist, keine Boxing-Konvertierung tritt ein, und die typspezifischen Methode aufgerufen wird. Ist keine Methodenargument, das dem aufrufenden Parametertyp übereinstimmt, wird der Parameter geschachtelt und allgemeine aufgerufen wird.

  • Entwerfen Sie Ihren Typ und ihre Member zum Verwenden von Generika. Die common Language Runtime erstellt geschlossenen generischen Typs an, wenn Sie eine Instanz der Klasse erstellen, und geben Sie ein generisches Typargument. Die generische Methode ist typspezifische und aufgerufen werden kann, ohne den aufrufenden Parameter boxing.

Obwohl es in einigen Fällen notwendig ist, allgemeine Klassen zu entwickeln, akzeptieren und zurückgeben Object Typen, können Sie die Leistung verbessern, durch die Bereitstellung auch einer typspezifische-Klasse, um einen häufig verwendeten Typ behandeln. Bereitstellen einer Klasse, die zum Festlegen und Abrufen von booleschen Werten entfällt z. B. die Kosten für Boxing und unboxing boolesche Werte.

Das folgende Beispiel definiert einen Punkttyp abgeleitet wurde. die Object -Klasse und überschreibt viele der virtuellen Methoden für die Object Klasse. Darüber hinaus wird im Beispiel gezeigt, wie viele der statischen aufrufen und Instanzmethoden von der Object Klasse.

using namespace System;

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

public:
    Point(int x, int y)
    {
        this->x = x;
        this->y = y;
    }

public:
    virtual bool Equals(Object^ obj) override
    {
        // 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:
    virtual int GetHashCode() override 
    {
        return x ^ y;
    }

    // Return the point's value as a string.
public:
    virtual String^ ToString() override 
    {
        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();
    }
};

int main()
{
    // Construct a Point object.
    Point^ p1 = gcnew 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 produces the following output.
//
// False
// True
// True
// p1's value is: (1, 2)

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Öffentliche statische (Shared in Visual Basic) Member dieses Typs sind threadsicher. Instanzmember sind nicht unbedingt threadsicher sein.

Zurück zum Anfang
Anzeigen: