Exportar (0) Imprimir
Expandir todo

Object (Clase)

Admite todas las clases de la jerarquía de clases de .NET Framework y proporciona servicios de bajo nivel a las clases derivadas. Se trata de la clase base fundamental de todas las clases de .NET Framework; es la raíz de la jerarquía de tipos.

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)] 
public class Object
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDual) */ 
public class Object
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.AutoDual) 
public class Object

Normalmente, los lenguajes no precisan una clase para declarar la herencia de Object porque está implícita.

Dado que todas las clases de .NET Framework se derivan de Object, todos los métodos definidos en la clase Object están disponibles en todos los objetos del sistema. Las clases derivadas pueden reemplazar, y de hecho reemplazan, algunos de estos métodos, entre los que se incluyen los siguientes:

  • Equals: admite comparaciones entre objetos.

  • Finalize: realiza operaciones de limpieza antes de que un objeto sea reclamado automáticamente.

  • GetHashCode: genera un número que se corresponde con el valor del objeto que admite el uso de una tabla hash.

  • ToString: crea una cadena de texto legible para el usuario que describe una instancia de la clase.

Consideraciones sobre el rendimiento

Si está diseñando una clase, como una colección, que deba controlar cualquier tipo de objeto, puede crear miembros de clase que acepten instancias de la clase Object. Sin embargo, el proceso de aplicar las conversiones boxing y unboxing a un tipo implica una reducción del rendimiento. Si sabe que la nueva clase controlará con frecuencia ciertos tipos de valor, hay dos procedimientos para minimizar el costo de aplicar la conversión boxing.

Uno de los procedimientos es crear un método general que acepte un tipo Object, y un conjunto de sobrecargas de método específicas del tipo que acepten cada uno de los tipos de valor que se espera que la clase controle con frecuencia. Si existe un método específico de tipos que acepte el tipo de parámetro de la llamada, no se produce ninguna conversión boxing y se llama al método específico de tipos. Si no hay ningún argumento de método que coincida con el tipo de parámetro de la llamada, el parámetro se somete a la conversión boxing y se llama al método general. Este procedimiento produce métodos que son compatibles con CLS.

El otro procedimiento es diseñar la clase y sus métodos para que utilicen genéricos. Common Language Runtime crea un tipo genérico cerrado cuando se crea una instancia de la clase y se especifica un argumento de tipo genérico. El método genérico es específico del tipo y se puede invocar sin aplicar la conversión boxing al parámetro de llamada. Este procedimiento produce métodos que no son compatibles con CLS en la versión 2.0 de .NET Framework.

En el ejemplo siguiente se define un tipo Point derivado de la clase Object y se reemplazan muchos de los métodos virtuales de la clase Object. Además, en el ejemplo se muestra cómo se llama a muchos de los métodos estáticos y de instancia de la clase Object.

using System;

// The Point class is derived from System.Object.
class Point 
{
    public int x, y;

    public Point(int x, int y) 
    {
        this.x = x;
        this.y = y;
    }
    
    public override bool Equals(object obj) 
    {
        // If this and obj do not refer to the same type, then they are not equal.
        if (obj.GetType() != this.GetType()) return false;

        // Return true if  x and y fields match.
        Point other = (Point) obj;
        return (this.x == other.x) && (this.y == other.y);
    }

    // Return the XOR of the x and y fields.
    public override int GetHashCode() 
    {
        return x ^ y;
    }

    // Return the point's value as a string.
    public override String ToString() 
    {
        return String.Format("({0}, {1})", x, y);
    }

    // Return a copy of this point object by making a simple field copy.
    public Point Copy() 
    {
        return (Point) this.MemberwiseClone();
    }
}

public sealed class App {
    static void Main() 
    {
        // Construct a Point object.
        Point p1 = new Point(1,2);

        // Make another Point object that is a copy of the first.
        Point p2 = p1.Copy();

        // Make another variable that references the first Point object.
        Point p3 = p1;

        // The line below displays false because p1 and p2 refer to two different objects.
        Console.WriteLine(Object.ReferenceEquals(p1, p2));

        // The line below displays true because p1 and p2 refer to two different objects that have the same value.
        Console.WriteLine(Object.Equals(p1, p2));
      
        // The line below displays true because p1 and p3 refer to one object.
        Console.WriteLine(Object.ReferenceEquals(p1, p3));
        
        // The line below displays: p1's value is: (1, 2)
        Console.WriteLine("p1's value is: {0}", p1.ToString());
    }
}

// This code produces the following output.
//
// False
// True
// True
// p1's value is: (1, 2)

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para operaciones multiproceso. Sin embargo, no se garantiza que los miembros de instancia sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft