Fonction générique [Résolu]

cs_Selig 31 Messages postés samedi 19 octobre 2002Date d'inscription 10 mars 2009 Dernière intervention - 25 févr. 2009 à 15:50 - Dernière réponse : cs_Selig 31 Messages postés samedi 19 octobre 2002Date d'inscription 10 mars 2009 Dernière intervention
- 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,
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 25 févr. 2009 à 20:45
3
Merci
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;
}
}

Merci cs_Robert33 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de cs_Robert33
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 25 févr. 2009 à 20:50
0
Merci
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.
Commenter la réponse de cs_Robert33
cs_Selig 31 Messages postés samedi 19 octobre 2002Date d'inscription 10 mars 2009 Dernière intervention - 25 févr. 2009 à 21:39
0
Merci
Merci beaucoup pour ton aide, cela fonctionne parfaitement :).
Commenter la réponse de cs_Selig

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.