配列からパスが欲しい §
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