Projekt struktury

Uwaga

Ta zawartość jest drukowana przez uprawnienie Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Wydanie to zostało opublikowane w 2008 roku, a książka została w pełni zmieniona w trzecim wydaniu. Niektóre informacje na tej stronie mogą być nieaktualne.

Typ wartości ogólnego przeznaczenia jest najczęściej określany jako struktura , czyli słowo kluczowe C#. Ta sekcja zawiera wskazówki dotyczące ogólnego projektu struktury.

❌ NIE udostępniaj konstruktora bez parametrów dla struktury.

Zgodnie z tą wskazówką można tworzyć tablice struktur bez konieczności uruchamiania konstruktora na każdym elemencie tablicy. Zwróć uwagę, że język C# nie zezwala strukturom na konstruktory bez parametrów.

❌ NIE NALEŻY definiować typów wartości modyfikowalnej.

Typy wartości modyfikowalne mają kilka problemów. Na przykład gdy obiekt pobierający właściwość zwraca typ wartości, obiekt wywołujący otrzymuje kopię. Ponieważ kopia jest tworzona niejawnie, deweloperzy mogą nie być świadomi, że zmutują kopię, a nie oryginalną wartość. Ponadto niektóre języki (w szczególności języki dynamiczne) mają problemy z używaniem typów wartości modyfikowalnej, ponieważ nawet zmienne lokalne, w przypadku wyłudzonych, powodują utworzenie kopii.

✔️ Upewnij się, że stan, w którym wszystkie dane wystąpienia są ustawione na zero, false lub null (zgodnie z potrzebami) jest prawidłowy.

Zapobiega to przypadkowemu tworzeniu nieprawidłowych wystąpień podczas tworzenia tablicy struktur.

✔️ Do implementowanie IEquatable<T> typów wartości.

Metoda Object.Equals w typach wartości powoduje boks, a jego domyślna implementacja nie jest bardzo wydajna, ponieważ używa odbicia. Equals może mieć znacznie lepszą wydajność i można ją zaimplementować, aby nie powodować boksu.

❌ NIE NALEŻY jawnie rozszerzać ValueType. W rzeczywistości większość języków temu zapobiega.

Ogólnie rzecz biorąc, struktury mogą być bardzo przydatne, ale powinny być używane tylko dla małych, pojedynczych, niezmiennych wartości, które nie będą często boxowane.

© Części 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.

Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published oct 22, 2008 by Addison-Wesley Professional w ramach Microsoft Windows Development Series.

Zobacz też