ДА, ЭТО ДЕЛАЕТ! ПОЗВОЛЯЙТЕ, ЧТО ИСКАТЬ ИСПЫТАТЬ.
Поскольку .NET компилирует все управляемые языки (VB, C#, C++) для IL (Intermediate Language) инструкции и String
типа является частью CLS (Common Specification Language) все версии .NET Framework: 2.0, 3.0, 3.5, 4.0 оптимизирует String
литералов конкатенации как часть процесса компиляции.
Например код VB.NET ниже:
Dim s As String = "A" & "B" & "C"
производит следующую инструкцию IL:
L_0008: ldstr "ABC"
Это ясно доказывает, что компилятор оптимизирует String
буквальной конкатенации (протестировано в: ildasm.exe)
Однако, если вышеописанный код состоит из отдельных утверждений:
Dim s As String = "A"
s &= "B"
s &= "C"
не выполняется оптимизация, и String
конкатенация выполняется во время выполнения (служебные служебные данные). То же самое относится к операторам одной строки с данными, разрешенными во время выполнения (переменные, свойства, методы).
Использование подчеркивания _ для подключения выше заявления в одной инструкции для обеспечения оптимизации:
Dim s As String = "A" _
& "B" _
& "C" _
и в случае, если вам нужны новые линии между маркерами использовать vbCrLf
(во время компиляции) постоянной, чтобы обеспечить оптимизацию, потому что использование Environment.NewLine
(run-time) не обеспечивает никакой оптимизации.
Надеюсь, это поможет вам получить преимущество!
теперь это гонка, чтобы найти его в спецификации. :-) – Larsenal 2008-11-14 15:59:05