Он должен быть встроен в компилятор, потому что дизассемблированный код выглядит не иначе. Посмотрите на следующий код:
Dim nameVar As String = "John"
MsgBox("Hello " & nameVar & _
". How are you?")
MSIL выглядит так:
IL_0000: нет
IL_0001: ldstr "Джон"
IL_0006: stloc.1
IL_0007: ldstr "Привет"
IL_000c: ldloc.1
IL_000d: ldstr ". Как дела \?"
IL_0012: строка вызова [mscorlib] System.String :: Concat (строка,
строка
строка)
Теперь тот же код без продолжения строки:
Dim nameVar As String = "John"
MsgBox("Hello " & nameVar & ". How are you?")
MSIL идентичен:
IL_0000: нет
IL_0001: ldstr "Джон"
IL_0006: stloc.1
IL_0007: ldstr "Привет"
IL_000c: ldloc.1
IL_000d: ldstr ". Как дела \?"
IL_0012: строка вызова [mscorlib] System.String :: Concat (строка,
строка,
строка)
Так что это "особенность" компилятора. Почему это так? Объясняя что-нибудь о VB.NET, вы должны оглянуться назад на классический Visual Basic. Многие из принципалов и процедур были просто собраны в VB.NET для обеспечения комфорта и привлечения VB6 и более ранних программистов. Итак, почему это так в VB.NET (2008 и ранее), вероятно, потому, что так было в VB6 и ранее. И я рискну предположить, что это было сделано именно так в VB6 из-за ограничений IDE до компиляции кода, но мы никогда не узнаем этого, если кто-то из оригинальной команды Microsoft VB6 не добавит свои соображения.
Надеюсь, это поможет!