导出 (0) 打印
全部展开
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
译文
原文

Object 类

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

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

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)

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

Object 类型公开以下成员。

  名称说明
公共方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifObject初始化 Object 类的新实例。
页首

  名称说明
公共方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifEquals(Object)确定指定的 Object 是否等于当前的 Object
公共方法静态成员由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifEquals(Object, Object)确定指定的对象实例是否被视为相等。
受保护的方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifFinalize允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。
公共方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifGetHashCode用作特定类型的哈希函数。
公共方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifGetType获取当前实例的 Type
受保护的方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifMemberwiseClone创建当前 Object 的浅表副本。
公共方法静态成员由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifReferenceEquals确定指定的 Object 实例是否是相同的实例。
公共方法由 XNA Framework 提供支持e5kfa45b.PortableClassLibrary(zh-cn,VS.100).gifToString返回表示当前对象的字符串。
页首

语言通常不要求类声明从 Object 的继承,因为继承是隐式的。

因为 .NET Framework 中的所有类均从 Object 派生,所以 Object 类中定义的每个方法可用于系统中的所有对象。 派生类可以而且确实重写这些方法中的某些,其中包括:

  • Equals — 支持对象间的比较。

  • Finalize — 在自动回收对象之前执行清理操作。

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

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

性能注意事项

如果要设计的类(如集合)必须处理所有类型的对象,则可以创建接受 Object 类的实例的类成员。 但是,对类型进行装箱和取消装箱的过程会增加性能开销。 如果知道新类将频繁处理某些值类型,则可以使用下列两种策略之一,以使装箱开销减至最少。

  • 一种策略是创建一个一般方法和一组类型特定的重载方法;一般方法接受 Object 类型,重载方法接受类预期要频繁处理的所有值类型。 如果某个类型特定的方法可接受调用参数类型,调用该类型特定的方法时则无需进行装箱。 如果调用参数类型与方法参数都不匹配,则对该参数进行装箱并调用一般方法。

  • 另一种策略是将类及其方法设计为使用泛型。 在创建类的实例并指定一个泛型类型参数时,公共语言运行时创建一个封闭泛型类型。 泛型方法是类型特定的,无需对调用参数进行装箱即可调用。

虽然有时必须开发可接受并返回 Object 类型的通用类,但也可以提供特定于类型的类来处理常用类型,从而提高性能。 例如,通过提供特定于设置和获取布尔值的类,可以减少对布尔值进行装箱和取消装箱所需的开销。

下面的示例定义一个派生自 Object 类的 Point 类型,然后重写 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)
//


.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

受以下版本支持:

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

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

社区附加资源

添加
Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft