¿Alguna forma elegante de operar con tipos genéricos? [duplicar

Esta pregunta ya tiene una respuesta aquí:

¿Existe alguna restricción que restrinja mi método genérico a los tipos numéricos? 20 respuestas

stoy trabajando en un pequeño proyecto educativo donde tenemos que implementar unnatriz @ -dimensional. Dependiendo del contexto, esta matriz tiene que funcionar con nuestro propio @ incorporaComplexNumber struct o conSystem.Double y para ejemplos muy simples, con tipos integrales (principalmenteSystem.Int32).

Debido a la naturaleza de la aplicación, no se nos exige implementar un rendimiento ultrarrápido.

or lo tanto, mi primera idea fue implementar unMatrix<T> dóndeT de alguna manera necesitaría estar restringido a"números".

El problema obvio al hacer esto es que no hay forma en este momento en el lenguaje de restringir el tipo genéricoT con operadores definidos. Además, no veo una manera fácil de restringirT a tipos razonables.

Mis preguntas son:

¿Alguien puede señalarme en la dirección de unelegant forma de realizar operaciones matemáticas con tipos genéricos que no comprometan demasiado el rendimiento y de alguna manera hacer que funcione con tipos integrados (si es posible).

Si Eric alguna vez lee esto, ¿aparece esta característica (restringir los tipos genéricos por parte de operadores definidos) en versiones hipotéticas futuras de reuniones de diseño de C # y alguna vez estuvo cerca de llegar al lenguaje?

Sé que es más fácil y mejor implementar unComplexMatrix escriba y cree envoltorios para cada "subtipo" de matriz (doble, integral, etc.) y pague los costos de rendimiento de las conversiones entre nuestro tipo complejo y el tipo de elementos de la matriz. Esta pregunta es más por curiosidad sobre cómo alguien implementaría un escenario similar.

Respuestas a la pregunta(4)

Su respuesta a la pregunta