【C#】Path.DirectorySeparatorCharとPath.AltDirectorySeparatorCharの違い

C#のPath.DirectorySeparatorCharとPath.AltDirectorySeparatorCharの違いについてまとめました。

目的

C#ディレクトリの区切り文字を取得する場合、以下の二つの方法で取得できます。

  • Path.DirectorySeparatorChar
  • Path.AltDirectorySeparatorChar

イマイチ違いがわからないので、Microsoft Docsから説明文を引用してみます。
まずDirectorySeparatorCharです。

階層ファイル システム編成を反映するパス文字列の、ディレクトリ レベルを区切るために使用する、プラットフォーム固有の文字を提供します。
Path.DirectorySeparatorChar Field (System.IO) | Microsoft Docs

次にAltDirectorySeparatorCharの説明文です。

階層ファイル システム編成を反映するパス文字列の、ディレクトリ レベルを区切るために使用する、プラットフォーム固有の代替文字を提供します。
Path.AltDirectorySeparatorChar Field (System.IO) | Microsoft Docs

はい、全然わかりません。
実際に使って検証してみます。

違いを検証する

実際にこれらの値をWindowsで出力してみます。

System.Console.WriteLine(Path.DirectorySeparatorChar); // 「\」
System.Console.WriteLine(Path.AltDirectorySeparatorChar); // 「/」

別々の文字が出力されました。
そこで試しにパスに両方の文字を含めた文字列を作ってみます。

var path = @"Path/To/File\Example/example.ex";

これをPathクラスで使ったところ、正常に動作しました。
どうやらDirectorySeparatorCharとAltDirectorySeparatorCharは「どちらの文字を使ってもPathクラスではDirectoryのセパレータとして認識しますよ」ということらしいです。

参考

docs.microsoft.com

docs.microsoft.com