У меня есть класс изображения продукта. Это объект с возможностью повторного использования для общей работы с изображениями (например, для продукта, для CMS при работе с изображениями и т. Д.). Это позволит мне установить заголовок файла и отредактировать изображение простыми способами с использованием стандартных классов .NET.Struct vs static class для общего ресурса?
Я могу использовать структуру, что означает, что если я использую структуру в 5 разных местах, это 5 разных мест памяти, но все они незащищены друг от друга. Изменение состояния одного из этих мест памяти не влияет на другие (что является желательным поведением). При запросе объекта он будет помещен в коробку.
Объект основан на экземпляре. Поэтому каждый продукт будет использовать объект продукта и работать с изображением (например, редактировать его название и т. Д.).
Если я создаю статический класс, то есть пять разных мест, относящихся к одному объекту. Поэтому мне нужно будет позаботиться о синхронизации потоков. Я не могу просто написать переменную, поскольку другой доступ может перезаписать переменную, независимо от того, насколько хорошо я синхронизирую доступ к этому общему ресурсу. Поэтому мне всегда нужно возвращать новые переменные. Кроме того, если я использую статический класс, который используется многими различными вызовами, это приведет к тому, что очередь получит доступ к общему ресурсу. Поскольку классы утилит являются статическими, и они просто такие - утилиты - они будут использоваться многими классами в моей кодовой базе. Возможно, не разумно использовать статические классы в этой ситуации?
Как объясняется в документации MSDN, я буду использовать только статический класс для глобального объекта. Таким образом, класс, который инкапсулирует данные о моей кодовой базе - есть только одна база кода, и этот класс будет содержать данные о подсчете строк и т. Д. Это не основано на экземпляре, как класс заказа (1 заказ-1 заказ-1 или более заказов).
В таком виде сценария, это хорошее дизайнерское решение, возможно, вместо использования структуры?
Hi. Я намерен создать стандартный класс изображений. Требование относится к движку электронной торговли, но я вижу непосредственный потенциал для повторного использования. Единственная причина, по которой я не обращался за ссылочным типом, заключался в том, что я бы изменил все ссылки, когда 1 ref изменяется. Я предполагаю, что это должно быть неизменным и ref type. – dotnetdev
Yup, звучит как отличный пример того, где подходит неизменяемый ссылочный тип. –
Yup. Объект будет использоваться различными подсистемами системы, поэтому непреложный путь. Похоже, что причина использования структуры основана на невыполнении сценария. Поправьте меня, если я ошибаюсь. Чтобы предотвратить бокс, я мог бы использовать структуру и создать метод, запрашивающий параметр типа значения. – dotnetdev