在VB.NET中如何使用文本字面量?
在C#中可以通过以下方式实现:
String str = @"c:\folder1\file1.txt";
这意味着反斜杠被视为字面值而不是转义字符。
VN.NET如何实现这一点?
在VB.NET中如何使用文本字面量?
在C#中可以通过以下方式实现:
String str = @"c:\folder1\file1.txt";
这意味着反斜杠被视为字面值而不是转义字符。
VN.NET如何实现这一点?
在VB.NET中,所有字符串文字都是逐字字符串文字。只需编写
Dim str As String = "c:\folder1\file1.txt"
VB.NET不支持内联控制字符。因此反斜杠始终被解释为字面值。
唯一需要转义的字符是双引号,它通过加倍来转义,就像在C#中所做的那样。
Dim s As String = """Ahoy!"" cried the captain." ' "Ahoy!" cried the captain.
@MarkJ已在@Jon Skeet的帖子中指出了这一点。
如果您绝对需要通过内联XML文字直接使用文本,则VB.Net支持这个“可恶”的特性。
考虑缓存字符串!不要每次评估...
Imports System.Xml.Linq
Dim cmdText as String = <![CDATA[
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1
]]>.Value
[编辑于2015年1月5日]
VB14 / VS2015支持多行字符串而无需任何花哨的操作。
Dim cmdText as String = "
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1"
\
视为转义字符,因此您可以将字符串写成普通文字形式:Dim str = "c:\folder1\file1.txt"
VbCrLf
, 我相信。(或者当然也可以使用 Environment.NewLine
- 这取决于您的需求。有时您需要系统特定的行分隔符;有时您需要特定协议所需的特定行分隔符等。)如果有疑问,请查看此比较页面: http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
VB.NET
'No string literal operator
Dim filename As String = "c:\temp\x.dat"
C#
// String literal
string filename = @"c:\temp\x.dat";
string filename = "c:\\temp\\x.dat";
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>
VB.NET不认识“\”作为转义字符。 但是,也许你可以使用其他解决方案(请注意,它的速度比拼接慢):
Dim s As String = Regex.Unescape("c:\\folder1\\file1.txt\nc:\\folder1\\file2.txt\nc:\\folder1\\file3.txt")
在这个例子中,字符串"s"包含三行。
符号“\”可以保护下一个“\”,使其不被正则表达式方法Unescape()所处理,这就是为什么每次都会重复两次。
"\n"是类似于C#的“换行”特殊字符。您也可以使用“\t”(制表符)等其他特殊字符。
很遗憾,在.vbhtml剃刀页面中,VB XML文字不起作用。希望在下一个版本中能有所改变。
var string = @"SELECT * FROM myTable WHERE etc";
比 'Dim query As String = "SELECT * " + _ "FROM myTable " + _ "WHERE something"`更加简洁。 - nathanchere