Я нашел варианты 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:\