web-dev-qa-db-ja.com

VB.NETで文字列を連結するためのアンパサンドとプラス

VB.NETでは、&の代わりに+を使用して文字列を連結することに利点はありますか?

例えば

Dim x as String = "hello" + " there"

vs.

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

はい、私はStringBuilderを使用したい多くの文字列連結について知っていますが、これはより一般的な質問です。

52
dcp

私は両方の演算子を支持する良い強力な議論を聞いたことがあります。どちらの議論に勝つかは、主にあなたの状況に依存します。私が言えることは、どちらかを標準化する必要があるということです。この2つを組み合わせたコードは、後で混乱を招いています。

&を支持するために私が今覚えている2つの引数:

  • Option Strictを使用しておらず、2つの数値文字列がある場合、コンパイラは+演算子の意味を算術加算と混同しやすい
  • 多くの古いvb6-eraコードを更新している場合、連結演算子を変換する必要がないので役立ちます(一貫性が必要です)。

+の場合:

  • Vb/C#ショップが混在している場合は、連結演算子が1つしかないのはいいことです。言語間でコードを移動するのが簡単になり、言語間を行き来する際のプログラマーのコンテキストスイッチが非常に少なくなります。
  • &はほとんどVBに固有ですが、文字列間の+は多くの言語で連結を意味すると理解されているため、読みやすくすることができます。
40
Joel Coehoorn

Micorosoftの preference は、VBを使用して、文字列に&を使用するプロガマーであり、+ではありません。

また、+演算子を使用して文字列を連結することもできます。ただし、あいまいさを排除するには、代わりに&演算子を使用する必要があります。

41
Walter

& VB.NETの文字列連結用

この理由の1つは、混乱を避けるためです。

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

コンパイラに対して意図を明確にしているため、&を使用する方が安全です(これら2つの値を連結し、両方とも文字列に変換する必要があります)。

+を使用すると、文字列が数値の場合、少なくともオプションstrictがオフの場合、バグを見つけるのが難しくなります。

例えば:

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

編集:ただし、文字列以外を連結する場合は、とにかくもっと良い方法を使用する必要があります。

10
Hans Olsson

私はそれが歴史的であり(。

5
PhiLho