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のセパレータとして認識しますよ」ということらしいです。