Salutations à tous ... je dois Trim
a String
. Mais je veux supprimer tous les espaces vides répétés dans la chaîne elle-même, pas seulement à la fin ou au début de celle-ci. Je pourrais le faire avec une méthode comme:
public static string ConvertWhitespacesToSingleSpaces(string value)
{
value = Regex.Replace(value, @"\s+", " ");
}
Ce que j'ai obtenu d' ici . Mais je veux que ce morceau de code soit appelé à l'intérieur de String.Trim()
lui - même, donc je pense que je dois étendre ou surcharger ou remplacer la Trim
méthode ... Y a-t-il un moyen de le faire?
Merci d'avance.
c#
string
extension-methods
trim
Girardi
la source
la source
C'est possible? Oui, mais uniquement avec une méthode d'extension
La classe
System.String
est scellée, vous ne pouvez donc pas utiliser de remplacement ou d'héritage.la source
String.Trim
.Il y a un oui et un non à votre question.
Oui, vous pouvez étendre les types existants à l'aide de méthodes d'extension. Les méthodes d'extension, naturellement, ne peuvent accéder qu'à l'interface publique du type.
Non, vous ne pouvez pas appeler cette méthode
Trim()
. Les méthodes d'extension ne participent pas à la surcharge. Je pense qu'un compilateur devrait même vous donner un message d'erreur détaillant cela.Les méthodes d'extension ne sont visibles que si l'espace de noms contenant le type qui définit la méthode utilise'ed.
la source
Méthodes d'extension!
la source
En plus d'utiliser des méthodes d'extension - probablement un bon candidat ici - il est également possible d '"envelopper" un objet (par exemple, "composition d'objet"). Tant que le formulaire encapsulé ne contient pas plus d'informations que l'objet encapsulé, l'élément encapsulé peut être proprement passé par des conversions implicites ou explicites sans perte d'informations: juste un changement de type / d'interface.
Bon codage.
la source