Fonction générique

Résolu
cs_Selig Messages postés 31 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 10 mars 2009 - 25 févr. 2009 à 15:50
cs_Selig Messages postés 31 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 10 mars 2009 - 25 févr. 2009 à 21:39
Bonjour j'ai un problème pour créer une fonction générique.

La fonction se présente comme :

public bool MaFonction<T> (T min,T max, T value)
{
      if (value < min || value > max)
      {
            return false;
      }
      else
      {
            return true;
      }
}

l'appel de la fonction se présente comme ca:

if(!Mafonction(0,9999,maValue)
{
      ...
}

Le problème vient du fait qu'il ne veut pas comparer (<) deux éléménts de type 'T'.

Je ne me souviens pas qu'il y avait ce genre de problème en C++.

Merci d'avance,

3 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
25 févr. 2009 à 20:45
Bonsoir,

je pense qu'il faut préciser au compilateur que les valeurs sont comparable.
Essaye
public static bool MaFonction<T>(T min, T max, T value)
where T : System.IComparable<T>
{
if (value.CompareTo ( min) >0 || value.CompareTo(max)<0)
{
return false;
}
else
{
return true;
}
}
3
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
25 févr. 2009 à 20:50
Au fait, oui en C** c'étair different.

En C++ c'etait le compilateur qui generait le code en raplaçcant le "template" par le type d'appel, il générait donc autant de fonction que nécéssaire.
en c# il semble que ce soit fait à l'instaciation, il faut donc indiquer au compilateur que ce sera instaciable.
0
cs_Selig Messages postés 31 Date d'inscription samedi 19 octobre 2002 Statut Membre Dernière intervention 10 mars 2009
25 févr. 2009 à 21:39
Merci beaucoup pour ton aide, cela fonctionne parfaitement :).
0
Rejoignez-nous