VB.NETでverbatim文字列リテラルをどのように行いますか?
これは、次のように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.
とにかくVBは\
をエスケープ文字として扱わないため、通常のリテラルとして文字列を書くことができます。
Dim str = "c:\folder1\file1.txt"
私が知っている限り、VBは、逐語的文字列リテラルの他の主要な目標、複数行を許可するという目標を達成する方法がありません- そのために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";
VB.NETは、エスケープ文字として「\」を認識しません。ただし、さらに解決策を使用することもできます(たとえば、連結よりも動作が遅いことを考慮してください)。
Dim s As String = Regex.Unescape("c:\\folder1\\file1.txt\nc:\\folder1\\file2.txt\nc:\\folder1\\file3.txt")
この場合、文字列「s」には3行が含まれます。記号「\」は、次の「\」を正規表現メソッドUnescape()から保護するため、毎回2回繰り返されます。
「\ n」は、C#に似た「改行」特殊文字です。 「\ t」(タブ)なども使用できます。
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 XMLリテラルは.vbhtmlかみそりページでは機能しません。うまくいけば、それは次のリリースで変わるでしょう。