2007/04/25(Wed) 17:13:33 編集(投稿者)
こんにちは。
■No3141 (kirapa さん) に返信
> επιστημη さん
> 未記入?さん
> >…それで十分良い方法だと思うけど、"もっと良い"とは? 簡単? 高速? 他のなにか?
> これで十分だとわかりました。ありがとうございます。
全然こだわる必要のないレベルだと思うんですけど。
private string GetParentDirectory(string pathName, int level)
{
string s = pathName;
for (int i = 0; i < level; i++)
{
s = Path.GetDirectoryName(s);
}
return s;
}
このコードだと、GetDirectoryNameを呼んだ回数だけ、
内部でその戻り値としてのstringインスタンスが生成されると考えられます。
それを避けたいならば、所詮文字列操作ですから、↓の方がいいのかも。
private string GetParentDirectory(string pathName, int level)
{
int x = pathName.Length;
for (int i = 0; i < level; i++)
{
x = pathName.LastIndexOf(Path.DirectorySeparatorChar, x - 1);
if (x < 0) return null;
}
if (x == 2) x++;
return pathName.Substring(0, x);
}