你如何做一个逐字字符串字面VB.NET?
这是在C#实现如下:
String str = @"c:\folder1\file1.txt";
这意味着反斜杠字面上而不应被视为转义字符。
这是如何在VB.NET实现?
你如何做一个逐字字符串字面VB.NET?
这是在C#实现如下:
String str = @"c:\folder1\file1.txt";
这意味着反斜杠字面上而不应被视为转义字符。
这是如何在VB.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已经在飞碟双向@乔恩的帖子指出了这一点。
VB.Net支持这种可憎的功能,如果你绝对需要通过内联XML文本使用一字不差。
考虑缓存字符串! 不评价这个每次...
Imports System.Xml.Linq
Dim cmdText as String = <![CDATA[
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1
]]>.Value
[编辑2015-JAN-5]
VB14 / VS2015支持没有任何诡计多行字符串。
Dim cmdText as String = "
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1"
VB不把\
作为转义字符,所以你可以只写字符串作为一个正常的文字:
Dim str = "c:\folder1\file1.txt"
据我所知,VB没有实现逐字字符串的另一主要目标,即允许多条线路中的任何方式- 你必须使用VbCrLf
为 ,我相信。 (或者Environment.NewLine
。当然-这取决于你的要求,有时你想要的特定系统的行分隔符;有时你想所要求的特定协议等特定的一个)
编辑: 在字符串中较新版本的Visual C ++支持多行
如有疑问看看这个比较页面: 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";
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”的(标签),等等。
VB XML文本不幸的是不会在.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>