4 votes

Puis-je étendre la méthode int.TryParse ?

J'aimerais avoir la méthode suivante

int num;  
int.TryParse("5",out num, 10);

Qui fera la même chose que TryParse, mais en plus si l'analyse syntaxique échoue, le paramètre out aura la valeur défectueuse 10.

Puis-je le mettre en œuvre ?

Avec les méthodes d'extension, je peux mettre en œuvre les éléments suivants :

int num;
num.TryParse("5",out num, 10);

Mais cela semble différent du reste des méthodes TryParse

6voto

Jamiec Points 35773

Vous ne pouvez pas ajouter de méthodes statiques aux classes existantes, mais vous pouvez ajouter votre propre méthode statique à votre propre classe, par exemple :

public static class MyConversions
{
   public static bool TryParse(string value, out int num, int defaultValue)
   {
     ...
   }
}

4voto

ulrichb Points 8512

Une ligne simple sans écrire une méthode d'aide serait :

int num = int.TryParse("5", out num) ? num : 10;

Et voici une méthode d'extension des chaînes de caractères : http://neue.cc/2010/04/09_251.html

2voto

Henrik Points 16565

Vous pourriez créer une méthode d'extension pour la chaîne de caractères :

int num;
"5".TryParse(out num, 10);

2voto

default locale Points 4244

Il n'y a aucun moyen d'implémenter une méthode d'extension statique. Regardez cette question : Méthodes d'extension statique
Des moyens d'y aller :
a. Implémenter la méthode d'extension sur les chaînes de caractères et non sur les ints :

public static int Parse(this string s, int defaultValue) {
   int result;
   return Int32.TryParse(s,out result) ? result : defaultValue;
}
...
int num = "5".Parse(10); //

b. Implémentez votre propre classe IntUtil avec la méthode TryParse(string, out int, int).

1voto

George Duckett Points 17305

Vous ne pouvez pas créer de méthodes d'extension statiques, donc vous ne pouvez pas faire ce que vous voulez malheureusement.

Si vous n'aimez vraiment pas ce que vous avez obtenu jusqu'à présent (méthode non statique), vous pouvez créer votre propre classe avec cette méthode statique, comme indiqué dans la réponse de @Jamiec.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X