本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Object 类

 

支持 .NET Framework 类层次结构中的所有类,并为派生类提供低级别服务。 这是 .NET Framework 中所有类的最终基类;它是类型层次结构的根。

若要浏览此类型的.NET Framework 源代码,请参阅Reference Source

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

System.Object
   所有类、结构、枚举和委托。

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

名称说明
System_CAPS_pubmethodObject()

初始化 Object 类的新实例。

名称说明
System_CAPS_pubmethodEquals(Object)

确定指定的对象是否等于当前对象。

System_CAPS_pubmethodSystem_CAPS_staticEquals(Object, Object)

确定指定的对象实例是否被视为相等。

System_CAPS_protmethodFinalize()

在垃圾回收将某一对象回收前允许该对象尝试释放资源并执行其他清理操作。

System_CAPS_pubmethodGetHashCode()

作为默认哈希函数。

System_CAPS_pubmethodGetType()

获取当前实例的 Type

System_CAPS_protmethodMemberwiseClone()

创建当前 Object 的浅表副本。

System_CAPS_pubmethodSystem_CAPS_staticReferenceEquals(Object, Object)

确定指定的 Object 实例是否是相同的实例。

System_CAPS_pubmethodToString()

返回表示当前对象的字符串。

System_CAPS_note说明

若要查看此类型的.NET Framework 源代码,请参阅Reference Source 你可以浏览源代码联机,请下载离线查看的引用并在调试; 过程中逐步执行源 (包括修补程序和更新)see instructions.

语言通常不需要类来声明从继承Object因为继承是隐式。

因为.NET Framework 中的所有类都派生自Object中, 定义的每个方法Object类是可用于所有对象系统中。 派生类可以和重写其中的某些方法,包括︰

  • Equals-支持对象之间的比较。

  • Finalize-在对象被自动回收之前,请执行清理操作。

  • GetHashCode-生成与对象的值对应一个数字,以支持使用哈希表。

  • ToString— 生成描述类的实例的用户可读文本字符串。

如果您正在设计的类,如的集合,必须在处理任何类型的对象,你可以创建接受的实例的类成员Object类。 但是,装箱和取消装箱类型的过程会带来的性能开销。 如果你知道新类将经常处理某些值类型可以使用两个策略之一装箱的成本降到最低。

  • 创建接受的常规方法Object类型,以及接受希望你的类以经常处理每个值类型的特定类型的方法重载的一组。 如果特定类型的方法存在,以接受调用的参数类型,没有值类型装箱发生,并且会调用特定类型的方法。 如果没有任何与调用的参数类型匹配的方法自变量,该参数进行装箱,并调用常规方法。

  • 设计你的类型和其成员来使用泛型。 在创建您的类的实例和指定泛型类型参数时,公共语言运行时创建封闭式泛型类型。 泛型方法是特定类型和可以调用而无需装箱调用的参数。

尽管,有时需要开发通用类,接受并返回Object类型,通过提供特定类型的类来处理常用的类型上,你可以提高性能。 例如,提供特定于设置和获取布尔值的类消除了装箱和取消装箱的布尔值的成本。

下面的示例定义一个派生自类型Object类并重写的虚方法的多种Object类。 此外,该示例演示如何调用许多静态和实例方法的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 example produces the following output:
//
// False
// True
// True
// p1's value is: (1, 2)
//

通用 Windows 平台
自 8 起可用
.NET Framework
自 1.1 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用

公共静态 (Shared在 Visual Basic 中) 的此类型的成员都是线程安全。 不保证实例成员都是线程安全。

返回页首
显示: