Как вы выполняете строковый литерал в VB.NET?
Это достигается в С# следующим образом:
String str = @"c:\folder1\file1.txt";
Это означает, что обратные косые черты обрабатываются буквально, а не как escape-символы.
Как это достигается в VB.NET?
Как вы выполняете строковый литерал в VB.NET?
Это достигается в С# следующим образом:
String str = @"c:\folder1\file1.txt";
Это означает, что обратные косые черты обрабатываются буквально, а не как escape-символы.
Как это достигается в VB.NET?
Все строковые литералы в VB.NET являются строковыми литералами. Просто напишите
Dim str As String = "c:\folder1\file1.txt"
VB.NET не поддерживает встроенные контрольные символы. Таким образом, обратная косая черта всегда интерпретируется буквально.
Единственный символ, который должен быть экранирован, - это знак двойной кавычки, который ускоряется путем его удвоения, как и в С#
Dim s As String = """Ahoy!"" cried the captain." ' "Ahoy!" cried the captain.
@MarkJ уже указал это в сообщении @Jon Skeet.
VB.Net поддерживает эту функцию abomination, если вам абсолютно необходимо использовать дословный текст с помощью встроенного XML-литерала.
Рассмотрим кэширование строки! Не оценивайте это каждый раз...
Imports System.Xml.Linq
Dim cmdText as String = <![CDATA[
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1
]]>.Value
[edit 2015-Jan-5]
VB14/VS2015 поддерживает многострочные строки без каких-либо махинаций.
Dim cmdText as String = "
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1"
VB в любом случае не рассматривает \
как escape-символ, поэтому вы можете просто написать строку как обычный литерал:
Dim str = "c:\folder1\file1.txt"
Насколько мне известно, VB не имеет никакого способа достичь другой важной цели стенографических литературных строк, например, о разрешении нескольких строк - для этого вам нужно использовать VbCrLf
. (Или Environment.NewLine
конечно, это зависит от ваших требований. Иногда вам нужен системный разделитель строк, иногда требуется конкретный, как того требует конкретный протокол и т.д.),
EDIT: Новые версии VB поддерживают несколько строк в строковых литералах
Если вы сомневаетесь, посмотрите на эту страницу сравнения: http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
VB.NET
'No string literal operator
Dim filename As String = "c:\temp\x.dat"
С#
// String literal
string filename = @"c:\temp\x.dat";
string filename = "c:\\temp\\x.dat";
VB.NET не распознает символ "\" как escape-символ. Но, возможно, вы можете использовать другое решение (учтите, что он работает медленно, чем конкатенация, например):
Dim s As String = Regex.Unescape("c:\\folder1\\file1.txt\nc:\\folder1\\file2.txt\nc:\\folder1\\file3.txt")
В этом случае строка "s" содержит три строки. Символ "\" защищает следующий "\" от regex метода Unescape(), поэтому он повторяется дважды каждый раз.
"\n" - специальный символ новой строки типа С#. Вы также можете использовать "\ t" (вкладка) и т.д.
XML-литералы VB, к сожалению, не будут работать на странице .vbhtml бритвы. Надеюсь, это изменится в следующем выпуске.
Dim sourceText As String =
<string>
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports Microsoft.Win32
Imports System.Linq
Imports System.Text
Imports Roslyn.Compilers
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
Imports Roslyn.Compilers.VisualBasic
Namespace HelloWorld
Module Program
Sub Main(args As String())
Console.WriteLine("Hello, World!")
End Sub
End Module
End Namespace
</string>