System::Object-klass
Object class
Basisklass som möjliggör användning av metoder som finns för System.Object-klassen i C#. Alla icke-triviala klasser som används i den översatta miljön bör ärva den.
class Object
Metoder
| Metod | Beskrivning |
|---|---|
| virtual Equals(ptr) | Jämför objekt med C# Object.Equals-semantik. |
| static Equals(T1 const&, T2 const&) | Jämför referenstypobjekt i C#-stil. |
| static Equals(T1 const&, T2 const&) | Jämför värdetypobjekt i C#-stil. |
| static Equals(float const&, float const&) | Emulerar C#-stil flyttalsjämförelse där två NaN-värden betraktas som lika även om NaN enligt IEC 60559:1989 inte är lika med något värde, inklusive NaN. |
| static Equals(double const&, double const&) | Emulerar C#-stil flyttalsjämförelse där två NaN-värden betraktas som lika även om NaN enligt IEC 60559:1989 inte är lika med något värde, inklusive NaN. |
| virtual FastCast(const Details::FastRttiBase&, void **) const | Endast för interna ändamål. |
| GetCounter() | Hämtar referensräknarens datastruktur som är associerad med objektet. |
| virtual GetHashCode() const | Analog till C# Object.GetHashCode()-metod. Möjliggör hashning av anpassade objekt. |
| virtual GetType() const | Hämtar objektets faktiska typ. Analog till C# System.Object.GetType()-anrop. |
| virtual Is(const TypeInfo&) const | Kontrollera om objektet representerar en instans av typen som beskrivs av targetType. Analog till C#-operatorn ‘is’. |
| Lock() | Implementerar låsning med C# lock()-sats. Anropa direkt eller använd LockContext-vaktobjekt. |
| virtual MemberwiseClone() const | Analog till C# Object.MemberwiseClone()-metod. Möjliggör kloning av anpassade typer. |
| Object() | Skapar objekt. Initierar alla interna datastrukturer. |
| Object(Object const&) | Kopieringskonstruktor. Kopierar egentligen ingenting, utan initierar bara ett nytt objekt och möjliggör kopieringskonstruktion av underklasser. |
| operator=(Object const&) | Tilldelningsoperator. Kopierar egentligen ingenting, utan initierar bara ett nytt objekt och möjliggör kopieringskonstruktion av underklasser. |
| static ReferenceEquals(ptr const&, ptr const&) | Jämför objekt efter referens. |
| static ReferenceEquals(T const&, T const&) | Jämför objekt efter referens. |
| static ReferenceEquals(T const&, std::nullptr_t) | Referens-jämför värdetypobjekt med nullptr. |
| ReferenceEquals(String const&, std::nullptr_t) | Specialisering av Object::ReferenceEquals för fallet med sträng och nullptr. |
| ReferenceEquals(String const&, String const&) | Specialisering av Object::ReferenceEquals för fallet med strängar. |
| RemovedSharedRefs(int) | Minskar delad referensräkning med angivet värde. |
| virtual SetTemplateWeakPtr(uint32_t) | Ställ in n:te mallargumentet som en svag pekare (istället för delad). Tillåter att byta pekare i behållare till svagt läge. |
| SharedCount() const | Hämtar aktuellt värde för delad referensräknare. |
| SharedRefAdded() | Ökar delad referensräkning. Bör inte anropas direkt; använd i stället smarta pekare eller ThisProtector. |
| SharedRefRemovedSafe() | Minskar och returnerar delad referensräkning. Bör inte anropas direkt; använd i stället smarta pekare eller ThisProtector. |
| virtual ToString() const | Analog till C#-metoden Object.ToString(). Gör det möjligt att konvertera anpassade objekt till sträng. |
| static Type() | Implementerar C#-konstruktionen typeof(System.Object). |
| Unlock() | Implementerar upplåsning av C# lock()-satsen. Anropa direkt eller använd LockContext sentinelobjekt. |
| WeakRefAdded() | Ökar svag referensräkning. Bör inte anropas direkt; använd i stället smarta pekare eller ThisProtector. |
| WeakRefRemoved() | Minskar svag referensräkning. Bör inte anropas direkt; använd i stället smarta pekare eller ThisProtector. |
| virtual ~Object() | Förstör objektet. Frigör alla interna datastrukturer. |
Typedefs
| Typedef | Beskrivning |
|---|---|
| ptr | Alias för smart pekartyp. |
Anmärkningar
Förutom metoderna som finns i C#-klassen System.Object möjliggör den även stöd för vissa begrepp som är specifika för den översatta kodmiljön. Detta inkluderar referensräkning som används av smarta pekarklasser (System::SmartPtr, System::WeakPtr, System::DynamicWeakPtr) och andra tjänster relaterade till minneshantering, felsökning osv.
Varje Object har två referensräknare: delad referensräknare och svag referensräknare. Den svaga referensräknaren lagras alltid i en fristående datastruktur snarare än i själva Object, vilket gör att svaga pekare kan överleva det refererade objektet. Den smarta referensräknaren lagras antingen i objektet självt eller i samma fristående struktur, beroende på makrot ENABLE_EXTERNAL_REFCOUNT. Som standard är den aktiverad i debug‑byggen och inaktiverad i release‑byggen. Om smart pekarräknaren lagras i objektet självt skapas den fristående datastrukturen endast om svaga pekare till objektet finns. Annars skapas den tillsammans med objektet självt.
Alla smarta pekare använder dessa två referensräknare och bidrar till samma och enda ägandegrupp.
Om en Object-subklass skapas på stacken får inga smarta pekare till den skapas, annars uppstår ett problem med stack‑borttagning.
Denna typ kan allokeras antingen på stacken som värdetyp eller på heapen med funktionen System::MakeObject(). När objektet väl är allokerat får man aldrig blanda ihop dessa två användningsfall: att ha SmartPtr-pekare till stack‑allokerade objekt är strikt förbjudet.
Se även
- Namespace System
- Library Aspose.Page for C++