Как часто вы создаете неявные преобразования для ваших классов?

StackOverflow https://stackoverflow.com/questions/2583050

  •  24-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложения .NET 4 года. Пока что мне не нужно было создавать никаких неявных преобразований для классов, которые я был авторизован.
Не могли бы вы предоставить реальные ситуации, когда вы не могли делать без создания неявных преобразований?

Спасибо

Это было полезно?

Решение

Неявные преобразования должны быть определены только тогда, когда тип может быть преобразован или из (желательно для а также из) другого типа с Нет потери данных. Другим критерием является то, что неявные преобразования должны быть довольно недорогими, потому что разработчик, использующий ваш класс, вероятно, не будет в курсе, когда происходит неявное преобразования.

Один пример: преобразование между системами координат. Например, полярное координатное вектор, которое может преобразовать в декартовые координаты, может быть удобным. Однако из-за плавающей точки раунд отключен, все равно будет лучше оставить это как явное преобразование, чтобы программист должен привести к приложению преобразования.

Неявное преобразование может быть гарантировано, если у вас есть два типа данных, которые хранят данные в том же формате, но единственным различием между типами является семантическим - как они используются или что они имеют в виду. Пример реального мира: преобразование между типами данных DateTime, которые имеют одинаковое (или совместимое) основное представление, но отличаются только датой начала EPOC. Вы найдете их при миграции более старых кодовых базов в более новые рамки, где оба определяют тип DateTime, но семантика немного отличается. Неявное преобразование здесь (при условии, что нет потери данных вообще), вероятно, в порядке и хорошая идея.

Если у вас есть набор типов, и вы определили свои собственные правила для того, как типы могут быть преобразованы между собой, то некоторые из этих преобразований могут быть неявными, а некоторые явные в зависимости от «серьезности» преобразования. Основным примером того, где я использовал неявное преобразование при реализации класса в .NET было, когда я выполнял Win32 Variant Semantics для библиотеки Runtime Delphi. Win32 и язык Delphi указывают ряд преобразований по варианту данных, которые могут быть выполнены нечастоты.

Что вы не нашли необходимости создавать неявные преобразования на самом деле хорошая вещь. То, что вы можете не значит, что вы должны. Неявные преобразования существуют в .NET в первую очередь, чтобы позволить различным языкам программирования представить свою собственную семантику таким образом, чтобы он был взаимодействовать и понятно другими языками .NET.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top