Я нашел варианты System.IO.Path.Combine(myPath, "..") которые самые простые и надежные. Более того, если то, что говорит northben, верно, то GetParent требует дополнительного вызова, если есть завершающая косая черта. На мой взгляд, это ненадежно.
Path.Combine гарантирует, что вы никогда не ошибетесь с косой чертой.
..ведет себя точно так же, как и везде в Windows. Вы можете добавить любое количество\.. к пути в cmd или проводнике, и он будет вести себя точно так, как я описываю ниже.
Некоторое базовое ..поведение:
- Если есть имя файла,
..отрублю его:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..") => D:\Grandparent\Parent\
- Если путь - это каталог,
..переместится на уровень выше:
Path.Combine(@"D:\Grandparent\Parent\", "..") => D:\Grandparent\
..\.. следует одним и тем же правилам, дважды подряд:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", @"..\..")=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", @"..\..")=>D:\
- И это имеет точно такой же эффект:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..", "..")=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", "..", "..")=>D:\