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 usadas 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 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 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 de C# Object.GetHashCode(). Permite el hash de objetos personalizados.
virtual GetType() constObtiene el tipo real del objeto. Análogo a la llamada de C# System.Object.GetType().
virtual Is(const TypeInfo&) constComprueba si el objeto representa una instancia del tipo descrito por targetType. Análogo al operador ‘is’ de C#.
Lock()Implementa el bloqueo de la sentencia lock() de C#. Llámalo directamente o usa el objeto centinela LockContext.
virtual MemberwiseClone() constAnálogo al método de C# Object.MemberwiseClone(). Permite clonar tipos personalizados.
Object()Crea el 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)Reference-compara 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 debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
SharedRefRemovedSafe()Decrementa y devuelve el contador de referencias compartidas. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
virtual ToString() constAnálogo del 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 C# lock(). Llámelo directamente o use el objeto centinela LockContext.
WeakRefAdded()Incrementa el contador de referencias débiles. No debe llamarse directamente; en su lugar, use punteros inteligentes o ThisProtector.
WeakRefRemoved()Decrementa el contador de referencias débiles. 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 permite el soporte de algunos conceptos específicos del entorno de código traducido. Esto incluye el recuento de referencias utilizado 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 referencias: contador de referencias compartidas y contador de referencias débiles. El contador de referencias débiles 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 referencias inteligentes 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 de punteros inteligentes 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 referencias 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, se produce 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 mediante 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