sábado, 26 de abril de 2014

La Clase Object y sus Miembros en C#

Tabla de Contenido

0. Introducción
1. La Clase object
1.1 Declaración de la clase Object
1.2 Listado de miembros de Object
1.2.1 Constructor Object
1.2.2 Equals
1.2.3 Equals(Object, Object)
1.2.4 Finalize
1.2.5 GetHashCode
1.2.6 GetType
1.2.7 MemberwiseClone
1.2.8 ReferenceEquals
1.2.9 ToString
2. Conclusiones
3. Glosario
4. Enlaces & Literatura

0. Introducción

En esta ocasión vamos a hacer una descripción generalizada de los miembros de la clase Object. Considero que un programador/desarrollador que desee conocer los pormenores de la jerarquía de herencia de los tipos de objetos en el Framework .NET, empecerá por esta clase, pues es la clase primaria de todas las demás: tanto las integradas como las que crea el mismo programador. La descripción consistirá en declarar el propósito del método, así mismo la utilidad que podemos extraer de su conocimiento en la definición de nuestros propios tipos de datos.

1. La Clase Object

Object [2] ss la clase que soporta todos los demás clases en el Framework .NET (incluídos los subconjuntos de librerías desarrollados por terceros; lo que también se conoce como perfiles); por otro lado, también provee servicios de bajo nivel (veremos esto con más detalle más adelante).

Como enuncian en [2]:
This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy.

1.1 Declaración de la clase Object

Esta es la definición sintáctica de object:

[SerializableAttribute]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
public class Object

Describamos, con brevedad, los atributos (o decoradores) esta declaración:
  • SerializableAttribute: Los objetos de esta clase puede ser representados en un flujo (serialización [3]) de bytes.
  • ComVisibleAttribute(true): Visibilidad de los tipos dentro de un assembly desde un componente COM.
  • ClassInterfaceAttribute(ClassInterfaceType.AutoDual): Soporte para compatibilidad hacia atrás.

1.2 Listado de miembros de object

Estos son todos los miembros de object:

Archivo Object.cs:

Ahora describamos cada uno de estos.

1.2.1 Constructor Object

Inicializa una nueva instancia del tipo Object [4]:

public Object()

Ejemplo:

Object obj = new Object();

1.2.2 Equals(Object)

Permite determinar si el objeto pasado como argumento es igual al actual [5].

public virtual bool Equals(Object obj)

Ejemplo:

obj1.Equals(obj2);

1.2.3 Equals(Object, Object)

Permite determinar si dos instancias referencian al mismo objeto [6].

public static bool Equals(Object objA, Object objB)

Ejemplo:

Object.Equals(obj1, obj2);

1.2.4 Finalize

Trata de liberar los recursos (e.g., memoria de trabajo) asignados a una instancia antes que el garbage collector lo marque como basura [8].

protected virtual void Finalize()

Ejemplo:

1.2.3 GetHashCode

Retorna la representación numérica (función hash code) del objeto actual [9].

public virtual int GetHashCode()

Ejemplo:

Console.WriteLine( obj1.GetHashCode() );

1.2.4 GetType

Obtiene una descripción en una instancia de Type del objeto actual.

public Type GetType()

Ejemplo:

1.2.5 MemberwiseClone

Crea una copia del objeto actual.

protected Object MemberwiseClone()

Ejemplo:

obj2 = obj1.MemberwiseClone();

[Nota: Recomiendo ver el ejemplo extendido en [12].]

1.2.6 ReferenceEquals

Determina si dos instancias de la clase Object corresponden con una única instancia [13].

public static bool ReferenceEquals(Object objA, Object objB)

Ejemplo:

if (Object.ReferenceEquals(obj1, obj2))

1.2.7 ToString

Retorna la representación en cadena de caracteres del objeto actual (en su implementación genérica el nombre de clase completamente calificado).

public virtual string ToString()

Ejemplo:

Conclusiones

Hemos realizado una descripción generalizada de los miembros (constructor, métodos (instancia y estáticos)) de la clase Object en el Microsoft .NET Framework. Más adelante tendremos la oportunidad de hacer una descripción detallada de cada uno de estos interesantes métodos (como ocurrió con ToString en: El Método ToString en C#) para comprender su naturaleza, aplicación, y utilidad en nuestros desarrollos y crear clases más robustas.

Glosario


  • Clonar
  • Instancia
  • Garbage collector
  • Nombre de clase completamente calificado

Enlaces & Literatura

[1]: C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
[2]: Object Class (System) - http://msdn.microsoft.com/en-us/library/system.object%28v=vs.110%29.aspx
[3]: Serialization (C# and Visual Basic) - http://msdn.microsoft.com/en-us/library/ms233843.aspx
[4]: Object Constructor (System) - http://msdn.microsoft.com/en-us/library/system.object.object(v=vs.110).aspx
[5]: Object.Equals Method (Object) (System) - http://msdn.microsoft.com/en-us/library/bsc2ak47(v=vs.110).aspx
[6]: Object.Equals Method (Object, Object) (System) - http://msdn.microsoft.com/en-us/library/w4hkze5k(v=vs.110).aspx
[7]: Liberación de Recursos y Finalizadores en C# | OrtizOL - Experiencias Construcción Software (xCSw) - http://ortizol.blogspot.com/2013/10/liberacion-de-recursos-y-finalizadores.html
[8]: Object.Finalize Method (System) - http://msdn.microsoft.com/en-us/library/system.object.finalize(v=vs.110).aspx
[9]: Object.GetHashCode Method (System) - http://msdn.microsoft.com/en-us/library/system.object.gethashcode(v=vs.110).aspx
[10]: El Método GetType y el Operador typeof en C# | OrtizOL - Experiencias Construcción Software (xCSw) - http://ortizol.blogspot.com/2014/04/el-metodo-gettype-y-el-operador-typeof.html
[11]: Object.GetType Method (System) - http://msdn.microsoft.com/en-us/library/system.object.gettype(v=vs.110).aspx
[12]: Object.MemberwiseClone Method (System) - http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone(v=vs.110).aspx
[13]: Object.ReferenceEquals Method (System) - http://msdn.microsoft.com/en-us/library/system.object.referenceequals(v=vs.110).aspx
[14]: El Método ToString en C# | OrtizOL - Experiencias Construcción Software (xCSw) - http://ortizol.blogspot.com/2014/04/el-metodo-tostring-en-c.html
[15]: Object.ToString Method (System) - http://msdn.microsoft.com/en-us/library/system.object.tostring(v=vs.110).aspx


J

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.