Я всегда фанат рекурсивных решений. Неэффективно, но весело!
public static int FolderDepth(string path)
{
if (string.IsNullOrEmpty(path))
return 0;
DirectoryInfo parent = Directory.GetParent(path);
if (parent == null)
return 1;
return FolderDepth(parent.FullName) + 1;
}
Мне нравится код на Лиспе, написанный на C #!
Вот еще одна рекурсивная версия, которая мне нравится еще лучше и, вероятно, более эффективна:
public static int FolderDepth(string path)
{
if (string.IsNullOrEmpty(path))
return 0;
return FolderDepth(new DirectoryInfo(path));
}
public static int FolderDepth(DirectoryInfo directory)
{
if (directory == null)
return 0;
return FolderDepth(directory.Parent) + 1;
}
Хорошие времена, хорошие времена ...