web-dev-qa-db-fra.com

Esperluette vs plus pour concaténer des chaînes dans VB.NET

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.

52
dcp

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 &:

  • Si vous n'utilisez pas 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étique
  • Si vous mettez à jour de nombreux anciens codes de l'ère vb6, cela évite d'avoir à convertir les opérateurs de concaténation (et n'oubliez pas: nous voulons de la cohérence).

Et pour +:

  • Si vous avez une boutique mixte vb/C #, c'est bien de n'avoir qu'un seul opérateur de concaténation. Il facilite le déplacement de code entre les langues et signifie juste beaucoup moins de changement de contexte pour les programmeurs lors des allers-retours entre les langues
  • & 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é.
40
Joel Coehoorn

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 &.

41
Walter

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
12
codingbadger

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.

10
Hans Olsson

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 ...).

5
PhiLho