Dans VB.NET, y a-t-il un avantage à utiliser &
pour concaténer des chaînes au lieu de +
?
Par exemple
Dim x as String = "hello" + " there"
vs.
Dim x as String = "hello" & " there"
Oui, je sais que pour beaucoup de concaténations de chaînes, je voudrais utiliser StringBuilder
, mais c'est plus une question générale.
J'ai entendu de bons et solides arguments en faveur des deux opérateurs. L'argument qui l'emporte dépend en grande partie de votre situation. La seule chose que je peux dire, c'est que vous devriez normaliser l'un ou l'autre. Le code qui mélange les deux demande de la confusion plus tard.
Les deux arguments dont je me souviens en ce moment pour favoriser &
:
Option Strict
et ayant deux chaînes numériques, il est facile pour le compilateur de confondre votre signification de +
opérateur avec, vous savez, l'addition arithmétiqueEt pour +
:
&
est presque unique à VB, tandis que +
entre les chaînes est compris dans de nombreuses langues comme une concaténation, vous gagnez donc un petit quelque chose en lisibilité.Micorosoft préférence est pour VB progammers à utiliser & pour les chaînes, PAS +).
Vous pouvez également utiliser l'opérateur + pour concaténer des chaînes. Cependant, pour éliminer toute ambiguïté, vous devez plutôt utiliser l'opérateur &.
Je préfère utiliser &
pour les concaténations de chaînes dans VB.NET
Une des raisons pour cela est d'éviter toute confusion, par exemple
MessageBox.Show(1 & 2) ' "12"
MessageBox.Show(1 + 2) ' 3
Il est plus sûr d'utiliser & puisque vous expliquez clairement votre intention au compilateur (je veux concaténer ces deux valeurs et elles devraient toutes les deux être converties en chaînes).
L'utilisation de + peut entraîner des bogues difficiles à trouver si les chaînes sont des valeurs numériques, du moins si l'option stricte est désactivée.
Par exemple:
1 + "1" = 2 ' this fails if option strict is on
1 & "1" = 11
Edit: bien que si vous concaténez une non-chaîne, vous devriez probablement utiliser une meilleure méthode de toute façon.
Je suppose que c'est historique (non .NET Visual Basic utilise &, je ne sais pas pourquoi ils ont introduit le +) et une question de goût (je préfère & parce que nous concaténons des chaînes, nous ne les ajoutons pas ...).