В настоящее время дженерики в C # не позволяют выполнять арифметические операции в разумных пределах. Доступны неудобные обходные пути, но ни один из них не является изящным, и все они снижают производительность. Согласно этому интервью, интерфейс с арифметическими типами реализовать невозможно, и поэтому Предлагается один такой обходной путь.
Но вы могли бы сделать так, чтобы ваша матрица приняла в качестве аргумента калькулятор, а в калькуляторе использовала метод умножения. Вы реализуете это и передаете в Матрицу.
Почему я должен указывать на продвинутом языке программирования, как складывать и умножать числа? [Отредактировано по многочисленным просьбам]
Почему бы просто не разрешить Generic быть ограниченным списком типов?
Eg.
class Matrix<T> where T : int,long,float,double
Конечно, синтаксис может быть другим. Но компилятору нужно только проверить, есть ли тип в списке и что используемые операторы работают со всеми типами, что должно быть намного проще, чем очевидно слишком сложное предложение интерфейса.
Есть ли очевидные причины, по которым это невозможно реализовать?