Класс System::Object
Object class
Базовый класс, позволяющий использовать методы, доступные для класса System.Object в C#. Все нетривиальные классы, используемые в переводимой среде, должны наследоваться от него.
class Object
Методы
| Метод | Описание |
|---|---|
| virtual Equals(ptr) | Сравнивает объекты, используя семантику C# Object.Equals. |
| static Equals(T1 const&, T2 const&) | Сравнивает объекты ссылочного типа в стиле C#. |
| static Equals(T1 const&, T2 const&) | Сравнивает объекты типa значения в стиле 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) | Сравнивает объект типa значения с nullptr по ссылке. |
| ReferenceEquals(String const&, std::nullptr_t) | Специализация Object::ReferenceEquals для случая строки и nullptr. |
| ReferenceEquals(String const&, String const&) | Специализация Object::ReferenceEquals для случая строк. |
| RemovedSharedRefs(int) | Уменьшает счётчик совместных ссылок на указанное значение. |
| virtual SetTemplateWeakPtr(uint32_t) | Установите n‑й аргумент шаблона как слабый указатель (а не shared). Позволяет переключать указатели в контейнерах в режим weak. |
| 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++