System::Object‑Klasse
Object class
Basisklasse, die die Verwendung von Methoden ermöglicht, die für die System.Object-Klasse in C# verfügbar sind. Alle nicht‑trivialen Klassen, die in der übersetzten Umgebung verwendet werden, sollten sie erben.
class Object
Methoden
| Methode | Beschreibung |
|---|---|
| virtual Equals(ptr) | Vergleicht Objekte unter Verwendung der C# Object.Equals-Semantik. |
| static Equals(T1 const&, T2 const&) | Vergleicht Referenztyp‑Objekte im C#‑Stil. |
| static Equals(T1 const&, T2 const&) | Vergleicht Werttyp‑Objekte im C#‑Stil. |
| static Equals(float const&, float const&) | Emuliert den C#‑artigen Gleitkommavergleich, bei dem zwei NaNs als gleich betrachtet werden, obwohl nach IEC 60559:1989 NaN zu keinem Wert, einschließlich NaN, gleich ist. |
| static Equals(double const&, double const&) | Emuliert den C#‑artigen Gleitkommavergleich, bei dem zwei NaNs als gleich betrachtet werden, obwohl nach IEC 60559:1989 NaN zu keinem Wert, einschließlich NaN, gleich ist. |
| virtual FastCast(const Details::FastRttiBase&, void **) const | Nur für interne Zwecke. |
| GetCounter() | Ermittelt die Referenzzähler‑Datenstruktur, die dem Objekt zugeordnet ist. |
| virtual GetHashCode() const | Analog zur C# Object.GetHashCode()-Methode. Ermöglicht das Hashen benutzerdefinierter Objekte. |
| virtual GetType() const | Ermittelt den tatsächlichen Typ des Objekts. Analog zum C# System.Object.GetType()-Aufruf. |
| virtual Is(const TypeInfo&) const | Prüft, ob das Objekt eine Instanz des durch targetType beschriebenen Typs darstellt. Analog zum C#‑Operator ‘is’. |
| Lock() | Implementiert das Sperren des C# lock()-Statements. Direkt aufrufen oder das LockContext-Wächterobjekt verwenden. |
| virtual MemberwiseClone() const | Analog zur C# Object.MemberwiseClone()-Methode. Ermöglicht das Klonen benutzerdefinierter Typen. |
| Object() | Erstellt ein Objekt. Initialisiert alle internen Datenstrukturen. |
| Object(Object const&) | Kopierkonstruktor. Kopiert nichts, wirklich, er initialisiert nur ein neues Objekt und ermöglicht das Kopierkonstrukt von Unterklassen. |
| operator=(Object const&) | Zuweisungsoperator. Kopiert nichts, wirklich, er initialisiert nur ein neues Objekt und ermöglicht das Kopierkonstrukt von Unterklassen. |
| static ReferenceEquals(ptr const&, ptr const&) | Vergleicht Objekte nach Referenz. |
| static ReferenceEquals(T const&, T const&) | Vergleicht Objekte nach Referenz. |
| static ReferenceEquals(T const&, std::nullptr_t) | Reference vergleicht Werttyp-Objekt mit nullptr. |
| ReferenceEquals(String const&, std::nullptr_t) | Spezialisierung von Object::ReferenceEquals für den Fall von string und nullptr. |
| ReferenceEquals(String const&, String const&) | Spezialisierung von Object::ReferenceEquals für den Fall von strings. |
| RemovedSharedRefs(int) | Verringert die gemeinsame Referenzzählung um den angegebenen Wert. |
| virtual SetTemplateWeakPtr(uint32_t) | Setzt das n‑te Vorlagenargument auf einen schwachen Zeiger (statt eines geteilten). Ermöglicht das Umschalten von Zeigern in Containern in den schwachen Modus. |
| SharedCount() const | Liefert den aktuellen Wert des gemeinsamen Referenzzählers. |
| SharedRefAdded() | Erhöht die gemeinsame Referenzzählung. Sollte nicht direkt aufgerufen werden; stattdessen smart pointers oder ThisProtector verwenden. |
| SharedRefRemovedSafe() | Verringert und gibt die gemeinsame Referenzzählung zurück. Sollte nicht direkt aufgerufen werden; stattdessen smart pointers oder ThisProtector verwenden. |
| virtual ToString() const | Analog zur C#-Methode Object.ToString(). Ermöglicht die Umwandlung benutzerdefinierter Objekte in einen string. |
| static Type() | Implementiert das C#-Konstrukt typeof(System.Object). |
| Unlock() | Implementiert das Entsperren der C# lock()-Anweisung. Direkt aufrufen oder das LockContext Wächterobjekt verwenden. |
| WeakRefAdded() | Erhöht die schwache Referenzzählung. Sollte nicht direkt aufgerufen werden; stattdessen smart pointers oder ThisProtector verwenden. |
| WeakRefRemoved() | Verringert die schwache Referenzzählung. Sollte nicht direkt aufgerufen werden; stattdessen smart pointers oder ThisProtector verwenden. |
| virtual ~Object() | Zerstört das Objekt. Gibt alle internen Datenstrukturen frei. |
Typedefs
| Typedef | Beschreibung |
|---|---|
| ptr | Alias für den Smart-Pointer-Typ. |
Hinweise
Zusätzlich zu den in der C#-Klasse System.Object verfügbaren Methoden ermöglicht es auch die Unterstützung einiger Konzepte, die speziell für die übersetzte Code-Umgebung gelten. Dazu gehören die Referenzzählung, die von Smart-Pointer-Klassen (System::SmartPtr, System::WeakPtr, System::DynamicWeakPtr) verwendet wird, sowie weitere Dienste im Zusammenhang mit Speicherverwaltung, Debugging usw.
Jedes Object verfügt über zwei Referenzzähler: den gemeinsamen Referenzzähler und den schwachen Referenzzähler. Der schwache Referenzzähler wird stets in einer separaten Datenstruktur und nicht im Object selbst gespeichert, wodurch schwache Zeiger das referenzierte Objekt überleben können. Der gemeinsame Referenzzähler wird entweder im Objekt selbst oder in derselben separaten Struktur gespeichert, abhängig vom Zustand des Makros ENABLE_EXTERNAL_REFCOUNT. Standardmäßig ist er in Debug-Builds aktiviert und in Release-Builds deaktiviert. Wenn der Smart-Pointer-Zähler im Objekt selbst gespeichert wird, wird die separate Datenstruktur nur erstellt, falls schwache Zeiger auf das Objekt existieren. Andernfalls wird sie zusammen mit dem Objekt erstellt.
Alle Smart-Pointer verwenden diese beiden Referenzzähler und tragen zur selben einzigen Eigentümergruppe bei.
Wenn eine Unterklasse von Object auf dem Stack erstellt wird, dürfen keine Smart-Pointer darauf erzeugt werden, da sonst ein Problem beim Stack-Löschen entsteht.
Dieser Typ kann entweder als Werttyp auf dem Stack oder im Heap mittels der Funktion System::MakeObject() alloziert werden. Sobald das Objekt alloziert ist, dürfen diese beiden Anwendungsfälle niemals vermischt werden: Das Verwenden von SmartPtr-Zeigern auf stack-allokierte Objekte ist strikt verboten.
Siehe auch
- Namespace System
- Library Aspose.Page for C++