Clase System::Object

Object class

Clase base que permite usar los métodos disponibles para la clase System.Object en C#. Todas las clases no triviales utilizadas con el entorno traducido deben heredarla.

class Object

Métodos

MétodoDescripción
virtual Equals(ptr)Compara objetos usando la semántica de C# Object.Equals.
static Equals(T1 const&, T2 const&)Compara objetos de tipo referencia al estilo de C#.
static Equals(T1 const&, T2 const&)Compara objetos de tipo valor al estilo de C#.
static Equals(float const&, float const&)Emula la comparación de punto flotante al estilo de C# donde dos NaN se consideran iguales aunque, según IEC 60559:1989, NaN no es igual a ningún valor, incluido NaN.
static Equals(double const&, double const&)Emula la comparación de punto flotante al estilo de C# donde dos NaN se consideran iguales aunque, según IEC 60559:1989, NaN no es igual a ningún valor, incluido NaN.
virtual FastCast(const Details::FastRttiBase&, void **) constSolo para uso interno.
GetCounter()Obtiene la estructura de datos del contador de referencias asociada al objeto.
virtual GetHashCode() constAnálogo al método C# Object.GetHashCode(). Permite generar hash de objetos personalizados.
virtual GetType() constObtiene el tipo real del objeto. Análogo a la llamada C# System.Object.GetType().
virtual Is(const TypeInfo&) constComprueba si el objeto representa una instancia del tipo descrito por targetType. Análogo al operador C# ‘is’.
Lock()Implementa el bloqueo de la sentencia C# lock(). Llamar directamente o usar el objeto centinela LockContext.
virtual MemberwiseClone() constAnálogo al método C# Object.MemberwiseClone(). Permite clonar tipos personalizados.
Object()Crea un objeto. Inicializa todas las estructuras de datos internas.
Object(Object const&)Constructor de copia. En realidad no copia nada, solo inicializa un nuevo objeto y permite la construcción por copia de subclases.
operator=(Object const&)Operador de asignación. En realidad no copia nada, solo inicializa un nuevo objeto y permite la construcción por copia de subclases.
static ReferenceEquals(ptr const&, ptr const&)Compara objetos por referencia.
static ReferenceEquals(T const&, T const&)Compara objetos por referencia.
static ReferenceEquals(T const&, std::nullptr_t)Compara por referencia un objeto de tipo valor con nullptr.
ReferenceEquals(String const&, std::nullptr_t)Especialización de Object::ReferenceEquals para el caso de cadena y nullptr.
ReferenceEquals(String const&, String const&)Especialización de Object::ReferenceEquals para el caso de cadenas.
RemovedSharedRefs(int)Disminuye el contador de referencias compartidas en el valor especificado.
virtual SetTemplateWeakPtr(uint32_t)Establece el n‑ésimo argumento de plantilla como un puntero débil (en lugar de compartido). Permite cambiar los punteros en contenedores al modo débil.
SharedCount() constObtiene el valor actual del contador de referencias compartidas.
SharedRefAdded()Incrementa el contador de referencias compartidas. No debería llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
SharedRefRemovedSafe()Decrementa y devuelve el contador de referencias compartidas. No debería llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
virtual ToString() constAnálogo al método C# Object.ToString(). Permite convertir objetos personalizados a cadena.
static Type()Implementa la construcción C# typeof(System.Object).
Unlock()Implementa el desbloqueo de la sentencia lock() de C#. Llámalo directamente o usa el objeto centinela LockContext.
WeakRefAdded()Incrementa el contador de referencia débil. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
WeakRefRemoved()Decrementa el contador de referencia débil. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
virtual ~Object()Destruye el objeto. Libera todas las estructuras de datos internas.

Typedefs

TypedefDescripción
ptrAlias para el tipo de puntero inteligente.

Observaciones

Junto con los métodos disponibles en la clase C# System.Object, también habilita soporte para algunos conceptos específicos del entorno de código traducido. Esto incluye el conteo de referencias usado por las clases de punteros inteligentes (System::SmartPtr, System::WeakPtr, System::DynamicWeakPtr) y otros servicios relacionados con la gestión de memoria, depuración, etc.

Cada Object tiene dos contadores de referencia: contador de referencia compartida y contador de referencia débil. El contador de referencia débil siempre se almacena en una estructura de datos separada en lugar de en el propio Object, lo que permite que los punteros débiles sobrevivan al objeto referenciado. El contador de referencia inteligente se almacena ya sea en el propio objeto o en la misma estructura separada, dependiendo del estado de la macro ENABLE_EXTERNAL_REFCOUNT. Por defecto, está habilitado en compilaciones de depuración y deshabilitado en compilaciones de lanzamiento. Si el contador del puntero inteligente se almacena en el propio objeto, la estructura de datos separada se crea solo si existen punteros débiles al objeto. De lo contrario, se crea junto con el propio objeto.

Todos los punteros inteligentes utilizan estos dos contadores de referencia y contribuyen al mismo y único grupo de propiedad.

Si una subclase de Object se crea en la pila, no se pueden crear punteros inteligentes hacia ella; de lo contrario, hay un problema de eliminación de la pila.

Este tipo puede asignarse ya sea en la pila como tipo valor o en el montón usando la función System::MakeObject(). Una vez que el objeto está asignado, nunca mezcle estos dos casos de uso: tener punteros SmartPtr a objetos asignados en la pila está estrictamente prohibido.

Ver también