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 nello stile C#. |
| static Equals(T1 const&, T2 const&) | Confronta gli oggetti di tipo valore nello 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 riferimenti 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à, inizializza solo un nuovo oggetto e consente la costruzione di copie delle sottoclassi. |
| operator=(Object const&) | Operatore di assegnazione. Non copia nulla, in realtà, inizializza solo 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) | Confronta per riferimento un 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) | Decrementa il conteggio dei riferimenti condivisi del valore specificato. |
| virtual SetTemplateWeakPtr(uint32_t) | Imposta il n‑esimo argomento del template a un puntatore debole (invece di condiviso). Consente di passare i puntatori nei contenitori alla modalità debole. |
| SharedCount() const | Ottiene il valore corrente del contatore dei riferimenti condivisi. |
| SharedRefAdded() | Incrementa il conteggio dei riferimenti condivisi. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| SharedRefRemovedSafe() | Decrementa e restituisce il conteggio dei riferimenti condivisi. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| virtual ToString() const | Analogo del metodo C# Object.ToString(). Consente di convertire 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 conteggio dei riferimenti deboli. Non dovrebbe essere chiamato direttamente; invece, usa i puntatori intelligenti o ThisProtector. |
| WeakRefRemoved() | Decrementa il conteggio dei riferimenti deboli. 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 ha 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 insieme all’oggetto stesso.
Tutti i puntatori intelligenti utilizzano 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.Font for C++