Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.
Тип значения общего назначения чаще всего называется структурой, ее ключевым словом C#. В этом разделе приведены рекомендации по проектированию общих структур.
❌ НЕ предоставляйте конструктор без параметров для структуры.
Следуя этому руководству, массивы структур можно создавать без необходимости запускать конструктор на каждом элементе массива. Обратите внимание, что C# не позволяет структурым иметь конструкторы без параметров.
❌ НЕ определяйте типы изменяемых значений.
Типы изменяемых значений имеют несколько проблем. Например, когда метод получения свойства возвращает тип значения, вызывающий получает копию. Так как копия создается неявно, разработчики могут не знать, что они мутируют копию, а не исходное значение. Кроме того, некоторые языки (динамические языки, в частности) имеют проблемы с использованием изменяемых типов значений, так как даже локальные переменные при разыменовании вызывают копирование.
✔️ Убедитесь, что состояние, при котором все данные экземпляра установлены в ноль, false или null (по мере необходимости), является действительным.
Это предотвращает случайное создание недопустимых экземпляров при создании массива структур.
✔️ DO реализует IEquatable<T> типы значений.
Метод Object.Equals для типов значений вызывает бокс, и его реализация по умолчанию не очень эффективна, так как она использует отражение. Equals может иметь гораздо лучшую производительность и может быть реализован, чтобы не вызвать бокс.
❌ Не расширяйте явным образом ValueType. На самом деле, большинство языков препятствуют этому.
Как правило, структуры могут быть очень полезными, но следует использовать только для небольших, неизменяемых значений, которые не будут использоваться часто.
© Часть 2005, 2009 Корпорация Майкрософт. Все права защищены.
Перепечатан с разрешения Pearson Education, Inc. из Руководство по проектированию: Соглашения, идиомы и шаблоны для повторного использования библиотек .NET, 2-е издание Кшиштоф Чвалина и Брэд Абрамс, опубликованное 22 октября 2008 года Addison-Wesley Профессиональный в рамках серии разработки Microsoft Windows.