Udostępnij za pośrednictwem


Klasa System.Object

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Klasa Object jest ostateczną klasą bazową wszystkich klas platformy .NET. Jest to katalog główny hierarchii typów.

Ponieważ wszystkie klasy na platformie .NET są dziedziczone z Object, każda metoda zdefiniowana w klasie Object jest dostępna we wszystkich obiektach w systemie. Klasy pochodne mogą i zastępują niektóre z tych metod, w tym:

  • Equals: obsługuje porównania między obiektami.
  • Finalize: wykonuje operacje oczyszczania, zanim obiekt zostanie automatycznie odzyskany.
  • GetHashCode: generuje liczbę odpowiadającą wartości obiektu do obsługi użycia tabeli skrótów.
  • ToString: tworzy czytelny dla człowieka ciąg tekstowy opisujący wystąpienie klasy.

Języki zwykle nie wymagają klasy do deklarowania dziedziczenia z Object , ponieważ dziedziczenie jest niejawne.

Zagadnienia dotyczące wydajności

Jeśli projektujesz klasę, taką jak kolekcja, która musi obsługiwać dowolny typ obiektu, możesz utworzyć składowe klasy, które akceptują wystąpienia Object klasy. Jednak proces boksowania i rozpakowywania typu niesie ze sobą koszt wydajnościowy. Jeśli wiesz, że nowa klasa będzie często obsługiwać niektóre typy wartości, możesz użyć jednej z dwóch taktyk, aby zminimalizować koszt boksu.

  • Utwórz ogólną metodę, która akceptuje Object typ, oraz zestaw przeciążeń metod specyficznych dla typu, które akceptują każdy typ wartości, który ma być często obsługiwany przez klasę. Jeśli istnieje metoda specyficzna dla typu, która akceptuje typ parametru wywołującego, nie występuje pole wyboru i wywoływana jest metoda specyficzna dla typu. Jeśli nie ma argumentu metody zgodnego z typem parametru wywołującego, parametr jest w polu i wywoływana jest metoda ogólna.
  • Zaprojektuj swój typ oraz jego składowe do korzystania z generyków. Środowisko uruchomieniowe języka wspólnego tworzy zamknięty typ ogólny podczas tworzenia wystąpienia klasy i określania argumentu typu ogólnego. Metoda ogólna jest specyficzna dla typu i może być wywoływana bez tworzenia pola wywołującego parametru.

Chociaż czasami konieczne jest opracowanie klas ogólnego przeznaczenia, które akceptują i zwracają Object typy, można poprawić wydajność, zapewniając również klasę specyficzną dla typu do obsługi często używanego typu. Na przykład stosowanie klasy specjalnie przeznaczonej do ustawiania i pobierania wartości Boolean eliminuje koszt konwersji i odwróconej konwersji wartości Boolean.