m.e*_*son 11 c# string curly-braces
我经常在一个通常包含数字的字符串中看到花括号,例如:
string something = "I have {0} cats";
Run Code Online (Sandbox Code Playgroud)
虽然我可以弄清楚这意味着什么,但我可以说我从来没有读过任何与其用法有关的文件.c#字符串文档似乎没有任何与这些相关的信息.谁能指出我正确的方向?
Rya*_*ett 20
在string.Format中用作值参数的占位符.string.Format("我有{0}猫",5); 打印"我有5只猫"
所以你可以使用string.Format(something,5); 并得到与上面相同的结果
*对于C#6.0和朋友来说,花括号不再仅仅是string.Format一个了!现在它们可以表示插值的字符串,您可以在其中混合C#对象和代码而无需所有string.Format&{0} {1} {2}开销。
注意:内插字符串以美元符号开头:$
用于构造字符串。插值字符串看起来像包含插值表达式的模板字符串。插值字符串返回一个字符串,该字符串将其包含的插值表达式替换为其字符串表示形式。
插值字符串的参数比复合格式的字符串更易于理解。例如,内插字符串
Console.WriteLine($"Name = {name}, hours = {hours:hh}");包含两个内插表达式,“ {name}”和“ {hours:hh}”。等效的复合格式字符串为:
Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours);
注意:如果您不知道,Console.WriteLine它具有某种内置的string.Format,如果您不知道该内置的话,在上面的示例中可能并不明显。
如果您想在不依赖Console.WriteLine魔术的情况下获取相同的字符串,则可能更容易理解以下内容:
string message = $"Name = {name}, hours = {hours:hh}"; // interpolated
Run Code Online (Sandbox Code Playgroud)
...相当于...
string message = string.Format("Name = {0}, hours = {1:hh}", name, hours); // old school
Run Code Online (Sandbox Code Playgroud)
插值字符串的结构为:
$"<text> {<interpolated-expression> [,<field-width>] [<:format-string>] } <text> ..."
哪里:
- field-width是一个带符号的整数,指示字段中的字符数。如果为正,则该字段为右对齐;否则为0。如果为负,则左对齐。
- format-string是适合于要格式化的对象类型的格式字符串。例如,对于DateTime值,它可以是标准的日期和时间格式字符串,例如“ D”或“ d”。
您可以在任何可以使用字符串文字的地方使用内插字符串。每次执行带有插值字符串的代码时,都会评估插值字符串。这使您可以分隔插值字符串的定义和评估。
要在插入的字符串中包含大括号(“ {”或“}”),请使用两个大括号“ {{”或“}}”。
*正如@Ben在上面的评论中指出的。(对不起,错过了。)
| 归档时间: |
|
| 查看次数: |
15512 次 |
| 最近记录: |