【问题标题】:What does {0} mean in a string literal, for example in Console.WriteLine?{0} 在字符串文字中是什么意思,例如在 Console.WriteLine 中?
【发布时间】:2013-08-02 10:02:42
【问题描述】:

我正在学习 C#,偶然发现了一小段代码:

{

  class Program

   {

     static void Main(string[] args)

      {

         int age = 20;// declaring variable and assign 20 to it.

         Console.WriteLine("You are {0} years old.",age);

         Console.ReadLine();

       }

   }

}

我不明白 {0} 将如何输出 20。我的意思是它不像数组索引或任何东西,那么它怎么知道它指的是变量 age ?我在逗号后面看到了变量,但这是否意味着如果我输入 {1} 那么它会在年龄之后检索变量?

还有这个在 C# 中调用的功能是什么,我似乎找不到它。

【问题讨论】:

  • 为什么票数接近? :)
  • 接近投票是因为这个问题是“离题”。我个人不认为这个问题是“题外话”。

标签: c# variables curly-braces curly-brackets


【解决方案1】:

还有这个在 C# 中调用的功能是什么,我似乎找不到它。

在 C# 级别:它不是 - 因为它根本不是 C# 功能;它只是一个库功能——另见string.Format。这个方便的实用方法定位 {0}、{1}、{2} 等,并将它们替换为第 0、第 1、第 2 等参数。显然,它的意义远不止于此(还有更复杂的可用格式 - 模式;消极与积极等)。

Console.WriteLine 的文档在这里:http://msdn.microsoft.com/en-us/library/828t9b9h.aspx

链接到“复合格式”:http://msdn.microsoft.com/en-us/library/txafckwd.aspx - 这就是 BCL 团队所说的,带有简介:

.NET Framework 复合格式功能将对象列表和复合格式字符串作为输入。复合格式字符串由与列表中的对象相对应的索引占位符(称为格式项)混合的固定文本组成。格式化操作会产生一个结果字符串,该字符串由原始固定文本与列表中对象的字符串表示混合而成。

【讨论】:

    【解决方案2】:

    这就像在标准 C printf() 函数中一样。值在字符串之后传递,并按照变量传递的顺序进行格式化。

    string.Format("Var1: {0}, var2:{1}, TheVery{3}InHere", "val1", "val2", "LongText");
    

    【讨论】:

      【解决方案3】:

      它是一个字符串格式化程序,它将被值替换。

      【讨论】:

        猜你喜欢
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-27
        • 1970-01-01
        相关资源
        最近更新 更多