之前一直用老版本的.net,那时候基本都是string.Format(),最近用了下新版本的还有dotnet core2.0
发现有了种新的插值方法,或者叫格式化方法。就是用$"..."的方式实现直接插值的方法,这样就不用老formatter,而且更直观。
我举个例子
string who = "I"; string where = "in the office"; DateTime when = DateTime.Now; string things = "write code"; Console.WriteLine($"{who} {things} {where} at {when:yyyy-MM-dd} {(when.Hour > 12 ? "pm" : "am")}");
输出为: I write code in the office at 2018-05-28 am
这种方式可以在字符串中带入变量,并且可以格式化,还可以进行简单的表达式。
这三种具体的实现方式,首先要在字符串头加$
1.如果直接填入变量的花需要一个大括号{varName} 里面直接写上变量名
2.如果要格式化一个变量,就如DateTime,需要{varName:Formatter},在变量名后面加一个" : "冒号,后面写格式化的字符串
3.表达式,需要在{}中加个(),在()中写表达式,当然不一定三段表达式,加减乘除也可以,其他我还没有试。
注意 如果要在$插值字符串中写"{"或"}"的话,需要写成"{{"或"}}"。
下面是官方文档,这个更全一些:
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/tokens/interpolated
其实官方的更好,我是一开始找半天这个文档,不知道叫插值表达式,一直没找到,所以写篇文章记录下,也避免走弯路。