2 votes

Pourquoi la fonction String.Format(fmt, args,..) est-elle "partagée" en .net ?

Y a-t-il une raison saine pour laquelle la fonction String.Format dans .net (pour C# et VB.net au moins) est partagée et non comme .split, .substring ou n'importe quelle autre fonction normale.

Qu'est-ce qui serait mauvais dans

Dim a as String = "1+2={0}".format(1+2) (ce serait bien)

vs.

Dim a as String = String.Format("1+2={0}",1+2) (la façon dont cela fonctionne)

Cela me gêne toujours lorsque j'utilise cette fonction - ce que je fais assez souvent.

Merci.

5voto

Joey Points 148544

Peut-être Eric Lippert Il a toujours les notes de conception à ce sujet, mais à part cela, je ne pense pas que l'on puisse répondre de manière précise à cette question.

Néanmoins, si vous en avez désespérément besoin, vous pouvez écrire une méthode d'extension :

public static string Format(this string fmt, params object[] args) {
    return string.Format(fmt, args);
}

Mon devinez est que la plupart des méthodes de chaînes de caractères exploiter sur la chaîne de caractères, en la transformant d'une manière simple et prévisible, comme par exemple Substring , Replace y PadLeft . Avec Format la chaîne de base est juste un modèle qui est appliqué pour intégrer les opérandes. Conceptuellement, la plupart des méthodes d'instance sur string peut être considéré comme la manipulation d'un string (Je sais, ce n'est pas ce qui se passe, je ne fais que dresser un tableau), alors que les méthodes statiques fonctionnent simplement avec.

Comme indiqué, ce n'est qu'une supposition. En fin de compte, il ne s'agissait probablement que d'une décision et la raison s'est perdue dans le temps.

3voto

Grzenio Points 16802

C'est juste une décision de conception - cela pourrait vraiment fonctionner dans les deux sens. Je pense qu'ils ont décidé de la rendre statique/partagée pour (1) des raisons historiques, pour la rendre plus similaire à C/C++ (2) parce que vous pouvez argumenter que la chaîne de format n'est pas un "vrai" texte, dans la plupart des cas les gens utilisent une constante inlined, et il se lit mieux si c'est un argument d'une fonction.

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