Ampersand 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 Ssortingng = "hello" + " there" 

contre.

 Dim x as Ssortingng = "hello" & " there" 

Oui, je sais que pour beaucoup de concaténations de chaînes, je voudrais utiliser SsortingngBuilder , mais c’est plus une question générale.

J’ai entendu de bons arguments forts en faveur des deux opérateurs. L’argument qui gagne le jour dépend en grande partie de votre situation. La seule chose que je puisse 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 Ssortingct et que vous avez deux chaînes numériques, le compilateur peut facilement confondre votre sens de l’opérateur + avec, vous le savez, l’arithmétique
  • Si vous mettez à jour beaucoup d’anciens codes vb6, il ne faut pas convertir les opérateurs de concaténation (et rappelez-vous: nous voulons de la cohérence).

Et pour +:

  • Si vous avez un magasin mixte vb / C #, il est agréable de n’avoir qu’un seul opérateur de concaténation. Cela facilite le déplacement du code entre les langues et signifie beaucoup moins de changement de contexte pour les programmeurs lors des déplacements entre les langues
  • & est presque unique à VB, alors que + entre les chaînes est compris dans de nombreuses langues pour signifier concaténation, donc vous obtenez un petit quelque chose dans la lisibilité.

Micorosoft préfère que les progammateurs VB utilisent & 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 utiliser l’opérateur & plutôt.

Je préfère utiliser & pour les concaténations de chaînes dans VB.NET

Une des raisons est d’éviter toute confusion, par exemple

 MessageBox.Show(1 & 2) ' "12" MessageBox.Show(1 + 2) ' 3 

Il est plus sûr d’utiliser et puisque votre intention est claire pour le compilateur (je veux concaténer ces deux valeurs et les convertir en chaînes).

Utiliser + peut rendre difficile la recherche de bogues si les chaînes sont des valeurs numériques, du moins si l’option ssortingct est désactivée.

Par exemple:

 1 + "1" = 2 ' this fails if option ssortingct is on 1 & "1" = 11 

Edit: cependant, si vous concaténez une non-chaîne, vous devriez probablement utiliser une méthode plus efficace.

Je suppose que c’est historique (utilisations non Visual Basic .NET, pas sûr de savoir pourquoi ils ont introduit le +) et une question de goût (je préfère et parce que nous concaténons des chaînes, nous ne les ajoutons pas …).