Какой-нибудь элегантный способ работы с общими типами? [Дубликат]
На этот вопрос уже есть ответ:
Есть ли ограничение, ограничивающее мой универсальный метод числовыми типами? 20 ответов Я работаю в небольшом образовательном проекте, где мы должны реализоватьn -мерная матрица. В зависимости от контекста, эта матрица должна работать с нашей собственной встроеннComplexNumber
struct или сSystem.Double
и для очень простых примеров, с целочисленными типами (в основномSystem.Int32
).
В связи с характером приложения мы не обязаны обеспечивать молниеносную производительность.
Моя первая идея заключалась в том, чтобы реализоватьMatrix<T>
гдеT
как-то нужно ограничить "Номера".
Очевидная проблема в этом состоит в том, что сейчас в языке нет способа ограничить общий типT
с определенными операторами. Также я не вижу простой способ перезапуститьT
разумным типам.
Мои вопросы:
Может кто-нибудь, пожалуйста, укажите мне в направлении Элегантный способ выполнения математических операций с универсальными типами, которые не слишком снижают производительность, и как-то заставить его работать со встроенными типами (если это возможно).
Если Эрик когда-нибудь читает это, встречается ли когда-нибудь эта функция (ограничение универсальных типов определенными операторами) в гипотетических будущих версиях совещаний по разработке C #, и была ли она когда-нибудь близка к переводу на язык?
Я знаю, что проще и лучше реализоватьComplexMatrix
введите и создайте обертки вокруг него для каждого «подтипа» матрицы (двойной, целочисленный и т. д.) и оплатите затраты на производительность преобразований между нашим сложным типом и любым типом элементов матрицы. Этот вопрос больше интересует, как кто-то может реализовать подобный сценарий.