Classe System::Object
Object class
Classe base che consente di utilizzare i metodi disponibili per la classe System.Object in C#. Tutte le classi non banali utilizzate con l’ambiente tradotto dovrebbero ereditarla.
class Object
Metodi
| Metodo | Descrizione |
|---|---|
| virtual Equals(ptr) | Confronta gli oggetti usando la semantica di C# Object.Equals. |
| static Equals(T1 const&, T2 const&) | Confronta gli oggetti di tipo riferimento in stile C#. |
| static Equals(T1 const&, T2 const&) | Confronta gli oggetti di tipo valore in stile C#. |
| static Equals(float const&, float const&) | Emula il confronto in virgola mobile in stile C# dove due NaN sono considerati uguali anche se, secondo IEC 60559:1989, NaN non è uguale a nessun valore, incluso NaN. |
| static Equals(double const&, double const&) | Emula il confronto in virgola mobile in stile C# dove due NaN sono considerati uguali anche se, secondo IEC 60559:1989, NaN non è uguale a nessun valore, incluso NaN. |
| virtual FastCast(const Details::FastRttiBase&, void **) const | Solo per scopi interni. |
| GetCounter() | Ottiene la struttura dati del contatore di riferimento associata all’oggetto. |
| virtual GetHashCode() const | Analogo del metodo C# Object.GetHashCode(). Consente l’hashing di oggetti personalizzati. |
| virtual GetType() const | Ottiene il tipo reale dell’oggetto. Analogo della chiamata C# System.Object.GetType(). |
| virtual Is(const TypeInfo&) const | Verifica se l’oggetto rappresenta un’istanza del tipo descritto da targetType. Analogo dell’operatore C# ‘is’. |
| Lock() | Implementa il blocco dell’istruzione C# lock(). Chiamalo direttamente o usa l’oggetto sentinella LockContext. |
| virtual MemberwiseClone() const | Analogo del metodo C# Object.MemberwiseClone(). Consente la clonazione di tipi personalizzati. |
| Object() | Crea l’oggetto. Inizializza tutte le strutture dati interne. |
| Object(Object const&) | Costruttore di copia. Non copia nulla, in realtà, si limita a inizializzare un nuovo oggetto e consente la costruzione di copie delle sottoclassi. |
| operator=(Object const&) | Operatore di assegnazione. Non copia nulla, in realtà, si limita a inizializzare un nuovo oggetto e consente la costruzione di copie delle sottoclassi. |
| static ReferenceEquals(ptr const&, ptr const&) | Confronta gli oggetti per riferimento. |
| static ReferenceEquals(T const&, T const&) | Confronta gli oggetti per riferimento. |
| static ReferenceEquals(T const&, std::nullptr_t) | Reference confronta l’oggetto di tipo valore con nullptr. |
| ReferenceEquals(String const&, std::nullptr_t) | Specializzazione di Object::ReferenceEquals per il caso di stringa e nullptr. |
| ReferenceEquals(String const&, String const&) | Specializzazione di Object::ReferenceEquals per il caso di stringhe. |
| RemovedSharedRefs(int) | Diminuisce il contatore di riferimento condiviso del valore specificato. |
| virtual SetTemplateWeakPtr(uint32_t) | Imposta il n‑esimo argomento del modello come puntatore debole (anziché condiviso). Consente di cambiare i puntatori nei contenitori in modalità debole. |
| SharedCount() const | Ottiene il valore corrente del contatore di riferimento condiviso. |
| SharedRefAdded() | Incrementa il contatore di riferimento condiviso. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| SharedRefRemovedSafe() | Decrementa e restituisce il contatore di riferimento condiviso. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| virtual ToString() const | Analogo del metodo C# Object.ToString(). Consente la conversione di oggetti personalizzati in stringa. |
| static Type() | Implementa la costruzione C# typeof(System.Object). |
| Unlock() | Implementa lo sblocco dell’istruzione C# lock(). Chiama direttamente o usa l’oggetto sentinella LockContext. |
| WeakRefAdded() | Incrementa il contatore di riferimento debole. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| WeakRefRemoved() | Decrementa il contatore di riferimento debole. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| virtual ~Object() | Distrugge l’oggetto. Libera tutte le strutture dati interne. |
Typedefs
| Typedef | Descrizione |
|---|---|
| ptr | Alias per il tipo di puntatore intelligente. |
Osservazioni
Oltre ai metodi disponibili nella classe C# System.Object, consente anche il supporto a alcuni concetti specifici per l’ambiente di codice tradotto. Ciò include il conteggio dei riferimenti utilizzato dalle classi di puntatori intelligenti (System::SmartPtr, System::WeakPtr, System::DynamicWeakPtr) e altri servizi relativi alla gestione della memoria, al debug, ecc.
Ogni Object dispone di due contatori di riferimento: il contatore di riferimento condiviso e il contatore di riferimento debole. Il contatore di riferimento debole è sempre memorizzato in una struttura dati separata anziché nell’Object stesso, il che consente ai puntatori deboli di sopravvivere all’oggetto referenziato. Il contatore di riferimento intelligente è memorizzato o nell’oggetto stesso o nella stessa struttura separata, a seconda dello stato della macro ENABLE_EXTERNAL_REFCOUNT. Per impostazione predefinita, è abilitato nelle build di debug e disabilitato nelle build di rilascio. Se il contatore del puntatore intelligente è memorizzato nell’oggetto stesso, la struttura dati separata viene creata solo se esistono puntatori deboli verso l’oggetto. Altrimenti, viene creata accanto all’oggetto stesso.
Tutti i puntatori intelligenti usano questi due contatori di riferimento e contribuiscono allo stesso unico gruppo di proprietà.
Se una sottoclasse di Object viene creata sullo stack, non possono essere creati puntatori intelligenti verso di essa, altrimenti si verifica un problema di cancellazione dallo stack.
Questo tipo può essere allocato sia sullo stack come tipo valore sia sull’heap usando la funzione System::MakeObject(). Una volta che l’oggetto è allocato, non mescolare mai questi due casi d’uso: avere puntatori SmartPtr verso oggetti allocati sullo stack è strettamente proibito.
Vedi anche
- Namespace System
- Library Aspose.Page for C++