Pathクラスを含め、.NETではパスをそのままの文字列で扱います。 一方で、Windowsではパス内のディレクトリ区切り記号に\
が用いられます。 C#では文字列中で\
を用いるとエスケープ記号として扱われるため、ディレクトリ区切り文字として記述するには\\
のように二つ重ねる必要があります。
\
を多用するパスを記述する際は必然的にエスケープが多くなり読みづらくなりますが、C#では逐語的文字列リテラルを用いることで\
をエスケープせずにそのまま記述することができます。
文字列リテラル"..."
にアットマーク@
を前置して逐語的文字列リテラル@"..."
として記述すると\
はエスケープ記号としては扱われなくなり、そのまま記述できるようになります。
通常の文字列と逐語的文字列リテラルでパスを記述する
using System;
class Sample {
static void Main()
{
// 通常の文字列リテラルを使って記述したパス
// (\はエスケープ記号として扱われるため、ディレクトリ区切り文字は\\と記述する必要がある)
var path1 = "C:\\Windows\\Microsoft.NET\\Framework";
// 逐語的文字列リテラルを使って記述したパス
// (\は通常の文字として扱われるので、ディレクトリ区切り文字をそのまま記述できる)
var path2 = @"C:\Windows\Microsoft.NET\Framework";
// path1とpath2はどちらも同じ文字列となる
Console.WriteLine(path1);
Console.WriteLine(path2);
}
}
実行結果
C:\Windows\Microsoft.NET\Framework C:\Windows\Microsoft.NET\Framework