C#代码中{0} \\ {1}的含义

时间:2010-11-24 12:54:18

标签: c# class console-application

正在使用我尚未编写的文件,我只是想了解它。我知道下面的代码片段并不多,但我只对一小部分感到困惑。

我只是想知道下面的内容,“{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 个答案:

答案 0 :(得分:6)

不,这不起作用。 string.Format的可选参数必须有多个占位符。

另一方面,您应该使用Path.Combine来构建路径。 (见this link

答案 1 :(得分:4)

"{0}\\{1}"format string - {0}表示'插入第一个参数ToString此处',{1}对于第二个参数是相同的。

如果你想插入另一个字符串,你需要告诉String.Format在哪里插入它:

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

但我强烈建议你改用Path.Combine

答案 2 :(得分:3)

这些是您希望在指定位置插入常量字符串的字符串的占位符。

查看String.Format Method (String, Object[])

答案 3 :(得分:1)

这在MSDN中有详细描述:

  

<强> string.Format method

请注意,第二个样本没有意义,因为指定了三个参数,但只使用了两个。

如果您想获取任意对象或值(如浮点数)的格式化字符串表示,通常会使用string.Format

我们不知道settings.Name的类型,但如果它是string类型,则以下代码是等效的:

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

或者:

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

后者的优点是您不必担心正确的路径分隔符以及是否需要分隔符。

答案 4 :(得分:1)

要添加子目录,您需要添加另一组{}

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

答案 5 :(得分:1)

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);

答案 6 :(得分:1)

你的例子不起作用!工作代码将是:

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

{n}替换为string.Format函数中的第n个参数。

但是对于构建FileNames,最好使用:

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

亲切的问候, 马库斯