Почему символ продолжения строки VB.Net должен быть последним в строке - PullRequest
4 голосов
/ 20 сентября 2010

Почему символ продолжения строки (_) должен быть последним в строке?Есть ли техническая причина для этого или это обычная «функция» Microsoft?

На других основных диалектах вы можете добавить комментарий после него, но не в VB.net, поэтому мне любопытно, почему Microsoft решила запретить комментировать эти строки.

Ответы [ 2 ]

6 голосов
/ 20 сентября 2010

Он должен быть встроен в компилятор, потому что дизассемблированный код выглядит не иначе. Посмотрите на следующий код:

    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 не добавит свои соображения.

Надеюсь, это поможет!

4 голосов
/ 20 сентября 2010

Один из разработчиков, который работает в Microsoft VB.Net, имеет сообщение в блоге об этой идее.Он говорит, что это хорошая идея, но требует некоторого рефакторинга компилятора.

Если вы считаете, что это должно быть приоритетом, вы можете оставить комментарий в блоге.Или предложить что-то на Microsoft Connect .

...