Fonction Len() vs Chaîne.La longueur de la propriété; lequel choisir?

je fais la transition de VB6 à VB.Net (VS 2010) et ont une compréhension de base plutôt qu'extensive de ce dernier. J'ai bien évidemment tout à fait un peu de code... J'hésite à utiliser le mot "upgrade "alors que" port "serait plus approprié étant donné que l'assistant de mise à niveau dans les versions précédentes de VS pourrait tout aussi bien avoir commenté le code et dit" Hé, pourquoi ne pas recommencer à zéro?"

dans une procédure que je fais traverser le Len() fonction a été utilisée pour déterminer la longueur d'une variable de chaîne. Qui fonctionne toujours dans VB.Net (bien que j'imagine que c'est en fait un appel à la Strings.Len Méthode), mais l'autre alternative est de requête .Length propriété de la variable.

la question Est de savoir qui utiliser et pourquoi. J'ai regardé les pages MSDN pertinentes et tout ce qu'ils semblent me dire est que la méthode/propriété existe. Rien n'est dit sur les questions de performance, en particulier lorsque les boucles d'un grand nombre d'appels peuvent être impliquer.

ma question, donc, est de savoir si quelqu'un est au courant d'un avantage testé et confirmé d'utiliser une approche plutôt que l'autre, ou si c'est simplement une question de préférence personnelle. Tout pointeur sur des situations similaires que je pourrais rencontrer pendant que je fais la progression serait également apprécié bien que compte tenu des directives de débordement de la pile c'est juste cette question que je suis intéressé à voir s'il y a une réponse spécifique à.

15
demandé sur Mark Hurd 2012-08-20 08:34:28

5 réponses

parce que vous utilisez VB.NET, votre Strings peut être Nothing et à moins que vous ne cochez explicitement pour cela, la plupart des méthodes VB, y compris Len, traitera de la même façon que String.Empty i.e. "".

Avec Réflecteur, vous pouvez voir Len est implémenté comme une vérification nulle, en retournant 0Nothing et sinon retour .Length, et la Gigue sera probablement en ligne de l'appel.

donc, si vous utilisez d'autres méthodes VB, je suggère d'utiliser Len aussi, à moins que vous connaître l' String n'est pas Nothing ou vérifier Nothing partout.

18
répondu Mark Hurd 2012-08-20 14:50:46

selon :

Len, une autre fonction de base classique, renvoie la longueur d'une chaîne. Système.String a la propriété Length qui fournit la même information. Est-ce mieux que les autres?

du point de vue de la Performance, Ces deux fonctions présentent peu de différence par rapport aux 1000 itérations. Il ne semble pas y avoir de raison de préférer l'un à l'autre dans ce cas et il n'y a pas de différence fonctionnelle. Je suis un peu partial à l'utilisation de la valeur de propriété plutôt que de la fonction VB puisqu'elle encourage la pensée de chaînes .NET comme objets. Cependant, à la base, c'est vraiment une question de préférence personnelle de la chose.

si vous faites confiance à leur parole, alors voici votre réponse. Sinon, le codage d'un test et d'itération devrait vous donner la réponse finale.

6
répondu Andy Merrick 2012-08-20 04:47:06

Je ne suis pas sûr des détails de la Len() méthode (mon langage de prédilection est le C#), mais je dirais certainement aller avec le Length propriété. Length est un membre de la System.String classe, alors que les Len() ne l'est pas.

a mon avis, c'est Len() est juste un VB cale sur le dessus de l' Length propriété. Quelqu'un pourrait probablement faire l'argument que l'utilisation de Len() est plus idiomatique, D'un point de vue VB. Je pense que je préférerais utiliser la propriété construite dans la classe, plutôt que d'utiliser un mécanisme différent juste parce qu'il est fourni par la langue.

4
répondu Andrew Cooper 2012-08-20 04:50:07

en plus du post de @Andrew, la fonction Len () est une chaîne de caractères de Visual Basic bibliothèque d'exécutionLength est un System.String classe de .NET framework API.

2
répondu adatapost 2012-08-20 04:46:59

Len la méthode est fournie pour une rétrocompatibilité avec VB6 ancienne (et antérieure) non-.NET code. Il n'y a rien de techniquement de mal à utiliser. Il travaillera, et seulement ainsi, que. Mais, il est préférable d'utiliser la nouvelle façon .NET de faire les choses chaque fois que possible. En dehors de vous faire entrer davantage dans le "mindset. net", cependant, le seul avantage tangible de l'utilisation String.Length est qu'il rend plus facile de porter le code à d'autres langues .NET dans le futur.

2
répondu Steven Doggart 2012-08-20 11:55:30