Значение {0} \\ {1} в коде C # - PullRequest
1 голос
/ 24 ноября 2010

Я работаю с файлом, который я не написал, и я просто пытаюсь понять это. Я понимаю, что приведенный ниже фрагмент не так уж и прост, но меня смущает только одна небольшая часть.

Мне просто интересно узнать, что означает "{0} \ {1}", если кто-нибудь может мне помочь?

Текущий результат кода ниже дает путь к файлу c: \ Output \ Folder \ Filename.

   private string GetOutputPathForTarget()
        {
            return string.Format("{0}\\{1}", outputDirectory, settings.Name);
        }

Если бы я хотел, например, добавить в эту строку другой подкаталог, это было бы так просто:

    private string GetOutputPathForTarget()
    {
        return string.Format("{0}\\{1}", outputDirectory, settings.Name, "Images");
    }

Ответы [ 7 ]

6 голосов
/ 24 ноября 2010

Нет, это не работает. Должно быть столько заполнителей, сколько необязательных аргументов string.Format.

С другой стороны, вы должны использовать Path.Combine для построения путей. (См. эту ссылку )

4 голосов
/ 24 ноября 2010

"{0}\\{1}" - это строка формата - {0} означает «вставить первый аргумент ToString здесь», {1} то же самое для второго аргумента.

Еслиесли вы хотите вставить другую строку, вам нужно указать String.Format, куда ее вставить:

private string GetOutputPathForTarget()
{
    return string.Format("{0}\\{1}\\{2}", outputDirectory, settings.Name, "Images");
}

Но тогда я настоятельно рекомендую использовать Path.Combine вместо

3 голосов
/ 24 ноября 2010

Это заполнители для строк, которые вы хотите вставить в постоянную строку в указанных позициях.

Посмотрите на Метод String.Format (String, Object [])

1 голос
/ 24 ноября 2010

Ваш пример НЕ работает! Рабочий код будет:

return string.Format("{0}\\{2}\\{1}", outputDirectory, settings.Name, "Images"); 

{n} заменяется n-ным параметром в строке. Функция формата.

Но для построения FileNames вам лучше использовать:

return System.IO.Path.Combine(part1, part2, part3);

С уважением, Markus

1 голос
/ 24 ноября 2010

с String.Format он заменяет {0} или {1} дополнительными аргументами, создавая составную строку.

Например - string.Format("{0}:{1}-{3}|{4}","a","b","c","d") будет равно "a:b-c|d"

Для вашего последнего требования, решение будет:

return string.Format("{0}\\{1}\\Images", outputDirectory, settings.Name);
1 голос
/ 24 ноября 2010

, чтобы добавить подкаталог, вам нужно добавить еще один набор {}.

private string GetOutputPathForTarget()
{
    return string.Format("{0}\\{1}\\{2}", outputDirectory, settings.Name, "Images");
}
1 голос
/ 24 ноября 2010

Это хорошо описано в MSDN:

строка. Метод форматирования

Обратите внимание, что второй пример не имеет смысла, поскольку указаны три параметра, но используются только два.

Обычно вы используете string.Format, если хотите получить форматированное строковое представление для произвольных объектов или значений, таких как числа с плавающей точкой.

Мы не знаем тип settings.Name, но если он имеет тип string, то следующий код эквивалентен:

return outputDirectory + "\\" + settings.Name;

Или:

return Path.Combine(outputDirectory, settings.Name);

Последнее имеет то преимущество, что вам не нужно беспокоиться о правильном разделителе пути и о том, нужен ли разделитель или нет.

...