ДА, ЭТО ДЕЛАЕТ! ДАВАЙТЕ ПРОВЕРИТЬ.
Поскольку .NET компилирует все управляемые языки (VB, C #, C ++) в инструкции IL (промежуточный язык), а тип String
является частью CLS (Common Language Specification) всех версий .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
(время выполнения) не обеспечивает оптимизации.
Надеюсь, это поможет вам получить преимущество в производительности!