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 à.
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 0
Nothing
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.
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.
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.
en plus du post de @Andrew, la fonction Len () est une chaîne de caractères de Visual Basic bibliothèque d'exécution où Length
est un System.String
classe de .NET framework API.
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.