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

MetodBeskrivning
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 **) constEndast för interna ändamål.
GetCounter()Hämtar referensräknarens datastruktur som är associerad med objektet.
virtual GetHashCode() constAnalog till C# Object.GetHashCode()-metod. Möjliggör hashning av anpassade objekt.
virtual GetType() constHämtar objektets faktiska typ. Analog till C# System.Object.GetType()-anrop.
virtual Is(const TypeInfo&) constKontrollera 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() constAnalog 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() constHä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() constAnalog 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

TypedefBeskrivning
ptrAlias 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