本文提供了此 API 参考文档的补充说明。
该 Object 类是所有 .NET 类的最终基类;它是类型层次结构的根。
由于 .NET 中的所有类都派生自 Object,因此类 Object 中定义的每个方法都可用于系统中的所有对象。 派生类可以替代其中一些方法,包括:
- Equals:支持对象之间的比较。
- Finalize:在对象被自动回收之前执行清理操作。
- GetHashCode:生成一个对应于对象值的数字,以支持哈希表的使用。
- ToString:制造描述类实例的人类可读文本字符串。
语言通常不需要类来声明继承 Object ,因为继承是隐式的。
性能注意事项
如果要设计必须处理任何类型的对象的类(如集合),则可以创建接受类实例的 Object 类成员。 但是,类型装箱和取消装箱进程会产生性能成本。 如果指导新类会经常处理某些值类型,则可以使用两种策略之一来最大限度地降低装箱成本。
- 创建接受 Object 类型的常规方法,以及一组特定于类型的方法重载,以便接受预计类会经常处理的每种值类型。 如果存在特定于类型的方法,并且该方法接受调用参数类型,则不会进行装箱,并且会调用此特定于类型的方法。 如果没有与调用参数类型匹配的方法参数,则会对参数进行装箱,并调用常规方法。
- 将类型及其成员设计为使用泛型。 在创建类的实例并指定泛型类型参数时,公共语言运行时将创建关闭的泛型类型。 泛型方法是类型特定的,无需将调用参数装箱即可调用。
尽管有时有必要开发接受和返回 Object 类型的常规用途类,但还可以提供特定于类型的类来处理常用类型,从而提高性能。 例如,提供专用于设置和获取布尔值的类,以便消除布尔值装箱和取消装箱成本。