2015-09-15 2 views
1

Я читал this MDSN article на написание объектов в файлы XML, и есть часть, где они создают путь с обеими прямой и обратной косой чертой:Объединение и/в пути

var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//SerializationOverview.xml"; 

Почему они это делают ? Я бы подумал, что предпочтительнее Path.Combine, но вместо этого первая часть приводит к пути с обратными косыми чертами (C:\...\), и они преднамеренно добавляют имя с перечеркнутым именем.
Есть ли причина для этого? Я предполагаю, что это сработает, несмотря на то, что .NET кажется довольно умным в этом, но все равно это имеет значение?

+0

Мое предположение - это опечатка. –

+0

одиночные '' \ ''обратные косые черты на языке C# рассматриваются как escape-символы, поэтому вам нужно использовать двойные обратные косые черты' '\\" 'или буквенный знак' @' c: \ somepath \ somepath \ "' – MethodMan

ответ

2

Этот фрагмент, кажется, демонстрирует переносимый код.

Прямая косая черта - это легальный разделитель путей практически для каждой операционной системы. Обратная косая черта применима к Win32 (в том числе смешанной с косой чертой) ... и почти нигде больше. .NET работает в операционных системах, где обратная косая черта не является юридическим разделителем.

Это говорит о том, что косая черта не идеальна для переносимости. Path.DirectorySeparatorChar было бы лучше, и (как вы уже наблюдали) Path.Combine() было бы лучше всего.

Удвоение передней косой черты похоже на опечатку. Обратные слэши часто удваиваются, чтобы предотвратить интерпретацию как escape-символ, но это не необходимо и не желательно с помощью косых черт.


Примечание: поддержка поддержки косой черты в качестве функции совместимости обеспечивается на уровне Win32. Вы не можете произвольно использовать косые черты в путях, переданных в функции ядра, и я бы не стал использовать его при использовании префикса \\?\ (предотвратить канонизацию).

0

Я думаю, что это просто ошибка при наборе текста, я пробовал код, и он просто создает файл SerializationOverview.xml в папке Мои документы.