Pourquoi ne Chemin.Combiner d'obtenir ce résultat avec un chemin relatif?

À ma grande surprise, ce code ne produit pas les résultats escomptés:

var basePath = @"\\server\BaseFolder";
var relativePath = @"\My\Relative\Folder";

var combinedPath = Path.Combine(basePath, relativePath);

Le résultat est \My\Relative\Folder à la place de l' \\server\BaseFolder\My\Relative\Folder.

Pourquoi est-ce? Quelle est la meilleure façon de combiner les chemins relatifs qui peuvent ou peuvent ne pas avoir une barre oblique en eux?

EDIT: je suis conscient que je peux faire de manipulation de chaîne sur relativePath de détecter et de supprimer de départ de la barre oblique. Est-il un moyen plus sûr de le faire (je pensais Path.Combine était censé être la manière la plus sûre) de prise en compte de barres obliques inverses et frontslashes?

  • Ce n'est pas un chemin d'accès relatif.
  • Je comprends que si il y avait 2 barres obliques à l'avant, en faisant un chemin d'accès UNC, mais un slash? Sérieusement?
  • Oui; au sérieux. \a\b est un absolu chemin d'accès. (même si c'est par rapport à la voiture)
InformationsquelleAutor Brandon | 2011-04-21