如果使用相同的val来替换两个单独的字符串.格式占位符,必须提供两次

本文关键字:占位符 格式 两次 字符串 单独 替换 val 两个 如果 | 更新日期: 2023-09-27 18:08:58

鉴于此:

string msg = string.Format("Duckbill {0} Platypus has not been loaded. Fetch Duckbill {1}'s Platypus then continue.", userDuckbill, userDuckbill);

…这样做是否足够:

string msg = string.Format("Duckbill {0} Platypus has not been loaded. Fetch Duckbill {1}'s Platypus then continue.", userDuckbill);

?

如果使用相同的val来替换两个单独的字符串.格式占位符,必须提供两次

一个参数可以指定多次。用这个代替:

string msg = string.Format("Duckbill {0} Platypus has not been loaded. Fetch Duckbill {0}'s Platypus then continue.", userDuckbill);

官方文档中有几个这样的例子。这里只有一个:

  string formatString = "    {0,10} ({0,8:X8})'n" + 
                        "And {1,10} ({1,8:X8})'n" + 
                        "  = {2,10} ({2,8:X8})";
  int value1 = 16932;
  int value2 = 15421;
  string result = String.Format(formatString, value1, value2, value1 & value2);

使用{0}两次:

string msg = string.Format(
    "Duckbill {0} Platypus has not been loaded. Fetch Duckbill {0}'s Platypus then continue.",
    userDuckbill);

第二个代码示例将产生FormatException,其中包含以下消息:

索引(从零开始)必须大于或等于零且小于实参列表的大小。

因此,无论何时使用{n},在格式字符串之后必须至少有n参数。然而,拥有超过n将是无用的。