Fonction générique [Résolu]

Messages postés
31
Date d'inscription
samedi 19 octobre 2002
Statut
Membre
Dernière intervention
10 mars 2009
- - Dernière réponse : 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,
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
23
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;
}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 115 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
23
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
Messages postés
31
Date d'inscription
samedi 19 octobre 2002
Statut
Membre
Dernière intervention
10 mars 2009
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.