System.Object, klasa

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 pochodzą z Objectmetody , każda metoda zdefiniowana w Object klasie 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 rozpasania typu niesie ze sobą koszt wydajności. 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 typ i jego składowe do używania typów ogólnych. Ś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 podanie klasy specyficznej dla ustawienia i pobrania wartości logicznych eliminuje koszt boksu i rozpasania wartości logicznych.