System::Object-klass

Object class

Basklass som möjliggör användning av metoder som finns tillgängliga 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 enligt IEC 60559:1989 är NaN inte 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 enligt IEC 60559:1989 är NaN inte 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 den typ som beskrivs av targetType. Analog till C# ‘is’-operatorn.
Lock()Implementerar C# lock()-satsen för låsning. Anropa direkt eller använd LockContext sentinelobjekt.
virtual MemberwiseClone() constAnalog till C#-metoden Object.MemberwiseClone(). 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)Jämför referensmässigt 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 mallargument till 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(). Möjliggör konvertering av anpassade objekt till sträng.
static Type()Implementerar C#-konstruktionen typeof(System.Object).
Unlock()Implementerar C# lock()-satsen för upplåsning. 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 objekt. 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 koncept 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) samt andra tjänster relaterade till minneshantering, felsökning osv.

Varje Object har två referensräknare: en delad referensräknare och en svag referensräknare. Den svaga referensräknaren lagras alltid i en fristående datastruktur snarare än i själva Object, vilket möjliggör att svaga pekare överlever 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 stackdeletion.

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 dessa två användningsfall: att ha SmartPtr-pekare till stackallokerade objekt är strikt förbjudet.

Se även