System::Object 类
内容
[
隐藏
]Object class
基类,使得能够使用 C# 中 System.Object 类可用的方法。所有在翻译环境中使用的非平凡类都应继承它。
class Object
方法
| 方法 | 描述 |
|---|---|
| virtual Equals(ptr) | 使用 C# Object.Equals 语义比较对象。 |
| static Equals(T1 const&, T2 const&) | 以 C# 风格比较引用类型对象。 |
| static Equals(T1 const&, T2 const&) | 以 C# 风格比较值类型对象。 |
| static Equals(float const&, float const&) | 模拟 C# 风格的浮点比较,其中两个 NaN 被视为相等,尽管根据 IEC 60559:1989 标准,NaN 不等于任何值,包括 NaN 本身。 |
| static Equals(double const&, double const&) | 模拟 C# 风格的浮点比较,其中两个 NaN 被视为相等,尽管根据 IEC 60559:1989 标准,NaN 不等于任何值,包括 NaN 本身。 |
| virtual FastCast(const Details::FastRttiBase&, void **) const | 仅供内部使用。 |
| GetCounter() | 获取与对象关联的引用计数数据结构。 |
| virtual GetHashCode() const | 相当于 C# Object.GetHashCode() 方法。支持对自定义对象进行哈希。 |
| virtual GetType() const | 获取对象的实际类型。相当于 C# System.Object.GetType() 调用。 |
| virtual Is(const TypeInfo&) const | 检查对象是否表示 targetType 描述的类型实例。相当于 C# 的 ‘is’ 运算符。 |
| Lock() | 实现 C# lock() 语句的锁定。直接调用或使用 LockContext 哨兵对象。 |
| virtual MemberwiseClone() const | 相当于 C# Object.MemberwiseClone() 方法。支持克隆自定义类型。 |
| Object() | 创建对象。初始化所有内部数据结构。 |
| Object(Object const&) | 拷贝构造函数。实际上不复制任何内容,只是初始化新对象并支持子类的拷贝构造。 |
| operator=(Object const&) | 赋值运算符。实际上不复制任何内容,只是初始化新对象并支持子类的拷贝构造。 |
| static ReferenceEquals(ptr const&, ptr const&) | 按引用比较对象。 |
| static ReferenceEquals(T const&, T const&) | 按引用比较对象。 |
| static ReferenceEquals(T const&, std::nullptr_t) | 使用引用比较值类型对象与 nullptr。 |
| ReferenceEquals(String const&, std::nullptr_t) | 针对字符串和 nullptr 情形的 Object::ReferenceEquals 特化。 |
| ReferenceEquals(String const&, String const&) | 针对字符串情形的 Object::ReferenceEquals 特化。 |
| RemovedSharedRefs(int) | 将共享引用计数减少指定的值。 |
| virtual SetTemplateWeakPtr(uint32_t) | 将第 n 个模板参数设置为弱指针(而不是共享指针)。允许在容器中将指针切换为弱模式。 |
| SharedCount() const | 获取共享引用计数器的当前值。 |
| SharedRefAdded() | 递增共享引用计数。不应直接调用;请改用智能指针或 ThisProtector。 |
| SharedRefRemovedSafe() | 递减并返回共享引用计数。不应直接调用;请改用智能指针或 ThisProtector。 |
| virtual ToString() const | 相当于 C# Object.ToString() 方法。用于将自定义对象转换为字符串。 |
| static Type() | 实现 C# typeof(System.Object) 构造。 |
| Unlock() | 实现 C# lock() 语句的解锁。可直接调用或使用 LockContext 哨兵对象。 |
| WeakRefAdded() | 递增弱引用计数。不应直接调用;请改用智能指针或 ThisProtector。 |
| WeakRefRemoved() | 递减弱引用计数。不应直接调用;请改用智能指针或 ThisProtector。 |
| virtual ~Object() | 销毁对象。释放所有内部数据结构。 |
Typedefs
| 类型定义 | 描述 |
|---|---|
| ptr | 智能指针类型的别名。 |
备注
除了 C# System.Object 类中可用的方法外,它还支持一些特定于翻译代码环境的概念。这包括智能指针类(System::SmartPtr、System::WeakPtr、System::DynamicWeakPtr)使用的引用计数以及其他与内存管理、调试等相关的服务。
每个 Object 都有两个引用计数器:共享引用计数器和弱引用计数器。弱引用计数器始终存放在独立的数据结构中,而不是在 Object 本身中,这使得弱指针可以在被引用对象被销毁后仍然存在。智能引用计数器可以存放在对象本身或同一独立结构中,取决于 ENABLE_EXTERNAL_REFCOUNT 宏的状态。默认情况下,调试构建时启用,发布构建时禁用。如果智能指针计数器存放在对象本身,则仅在存在指向该对象的弱指针时才创建独立的数据结构。否则,它会与对象本身一起创建。
所有智能指针都使用这两个引用计数器,并且归属于同一个唯一的所有权组。
如果在栈上创建 Object 的子类,则不能创建指向它的智能指针,否则会出现栈删除问题。
此类型既可以作为值类型在栈上分配,也可以使用 System::MakeObject() 函数在堆上分配。对象分配后,切勿混用这两种情况:严禁将 SmartPtr 指针指向栈分配的对象。
另见
- Namespace System
- Library Aspose.Font for C++