[C#/résolu] type template avec méthodes connues par avance

type template avec méthodes connues par avance [C#/résolu] - C#/.NET managed - Programmation

Marsh Posté le 13-11-2006 à 12:29:12    

Bonjour à tous,
 
Je cherche à implémenter un tas de fibonacci de façon générique. C'est un arbre qui peut stocker les clés et les ordonner.
J'ai donc besoin que le template sache que le type des éléments ait un opérateur de compraison (< ou > ).
 
Avec ce code:

Code :
  1. public class TasFibo<T>
  2. {
  3.   bool inferieur(T val1,T val2)
  4.   {
  5.     return val1<val2;
  6.   }
  7. }


...le compilateur se plaint que le type T ne possède pas l'opérateur <.
 
J'ai cherché la syntaxe, qui me dit-on doit exister, mais je ne l'ai pas trouvé.... avez-vous déjà fait ce genre de chose?
 
Accessoirement: y a t-il une bonne librairie C# gratuite implémentant un tas de Fibonacci?


Message édité par nargy le 13-11-2006 à 13:43:35
Reply

Marsh Posté le 13-11-2006 à 12:29:12   

Reply

Marsh Posté le 13-11-2006 à 12:39:21    

Tu as regardé du coté d'IComparable?


Message édité par masklinn le 13-11-2006 à 12:39:44

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 13-11-2006 à 13:13:51    

pour que le compilo ne rale pas, faut lui spécifié que les objets qui seront passé, doivent posséder l'opérateur en question...
 
public class TasFibo<T> where T ....
{  
    bool inferieur(T val1,T val2)  
    {    return val1<val2;  }
}  
 
ou les "..." représenterais l'opérateur que doit posséder l'objet T...  
Maintenant, je ne sais pas comment le spécifié, regarde du coté de la doc (CONSTRAINT)
 PS: ou tu spécifie dans les contraintes, que les objets doivent implémenté l'interface ICOMPARABLE...


Message édité par moi23372 le 13-11-2006 à 13:14:30
Reply

Marsh Posté le 13-11-2006 à 13:43:02    

Ouiiii!!!
merci les gars...
la syntaxe est (doc msdn):

Code :
  1. public class MyGenericClass<T> where T:IComparable { }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed