2009-07-17 14 views
5

Quiero crear una clase genérica que tome un parámetro de tipo y restrinja ese parámetro a tipos numéricos o, más generalmente, a cualquier tipo sobre el cual se pueda aplicar el operador de incremento ++.Clase genérica con parámetro de tipo restringido

Sé que puedo hacer lo siguiente para restringir a las estructuras, pero obviamente hay estructuras que no son tipos numéricos y para las cuales el operador ++ no es compatible. ¿Puedo hacer esto en C#

class Example<T> where T : struct 
{ 
    //Implementation detail 
} 
+2

Esta es una función que se solicita con frecuencia. Implementarlo requeriría cambios tanto en el lenguaje como en el tiempo de ejecución. Es una posibilidad de versiones futuras hipotéticas, pero es poco probable que sea nuestra más alta prioridad. –

+0

posible duplicado de [restricción genérica para hacer coincidir los tipos numéricos] (http://stackoverflow.com/questions/3329576/generic-constraint-to-match-numeric-types) – nawfal

Respuesta

8

Desafortunadamente esto no es posible (ver here.) Sólo se puede restringir el tipo de:

  • Implementar una interfaz específica o derivar de una clase específica
  • sea ​​un class o struct
  • tener un constructor sin parámetros

Restringir los tipos para tener operadores específicos es una característica muy solicitada, pero creo que tampoco estará en C# 4.

Cuestiones relacionadas