2020年09月23日
川俣晶の縁側ソフトウェアC# コーディング How To total 1035 count

【入門級】文字列配列からファイルのパスを生成

Written By: 川俣 晶連絡先

配列からパスが欲しい §

 string[] ar = { "a", "b", "c" };という配列があるとします。

 ここから"a\b\c"というファイルのパスを作りたいとします。

 正攻法で行くとPath.Combine(ar[0], ar[1], ar[2]);です。Path.Combineメソッドは任意の個数の文字列を連結してパスを生成できます。

 しかし、ここには1つソースを短縮できるポイントがあります。

  • 任意の個数の引数を取るメソッドは、任意の個数の代わりに配列を渡せる

 ですから、Path.Combine(ar);と書いても結果は同じです。

罠の数々 §

  • 実行されるコードが全く同じではないので、同じ文字列が返ってくるとしても、実行速度が同じというわけではない。速度がクリティカルなときはベンチマークを取ってどちらが速いか確認しておくと良い

参考リンク §

Path.Combine メソッド

 上記のリンクからPath.Combine メソッドにはどのようなバリエーションがあり、それぞれのケースでどのバリエーションが呼ばれているのかを確認しておこう。

リポジトリ §

https://github.com/autumn009/cshowto

path2 §

using System;

using System.IO;

class Program

{

    static void Main()

    {

        string[] ar = { "a", "b", "c" };

        // 正攻法

        var path1 = Path.Combine(ar[0], ar[1], ar[2]);

        Console.WriteLine($"path1={path1}");

        // これでもいける

        var path2 = Path.Combine(ar);

        Console.WriteLine($"path2={path2}");

    }

}

実行結果

path1=a\b\c

path2=a\b\c

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?