Alguma maneira elegante de operar com tipos genéricos? [duplicado
Esta pergunta já tem uma resposta aqui:
Existe uma restrição que restringe meu método genérico a tipos numérico 20 respostasEstou trabalhando em um pequeno projeto educacional em que precisamos implementar umn matriz dimensional. Dependendo do contexto, essa matriz deve funcionar com nosso próprioComplexNumber
struct ou comSystem.Double
e para exemplos muito simples, com tipos integrais (principalmenteSystem.Int32
).
evido à natureza do aplicativo, não somos obrigados a implementar um desempenho extremamente rápid
minha primeira ideia foi, portanto, implementar umMatrix<T>
OndeT
precisaria, de alguma forma, ser restrito a"números".
O problema óbvio de fazer isso é que não há como, no momento, restringir o tipo genéricoT
com operadores definidos. Também não vejo uma maneira fácil de re-restringirT
para tipos razoáveis.
As minhas perguntas são:
Pode alguém por favor me aponte na direção de umelegantaneira de fazer operações matemáticas com tipos genéricos que não comprometam muito o desempenho e de alguma forma fazer isso funcionar com tipos incorporados (se possível
E se Eric sempre lê isso, esse recurso (restringindo tipos genéricos por operadores definidos) aparece em versões hipotéticas futuras de reuniões de design em C # e já esteve perto de torná-lo no idioma?
Sei que é mais fácil e melhor implementar umComplexMatrix
digite e crie wrappers para cada "subtipo" de matriz (duplo, integral etc.) e pague os custos de desempenho das conversões entre o nosso tipo complexo e o tipo de elemento da matriz. Esta questão é mais por curiosidade sobre como alguém implementaria um cenário semelhant