What's with the dollar sign ($“string”)
我在一本书中做了一些C练习,我跑过去举了个例子,让我很困惑。直接从书本开始,输出行显示如下:
1 2 | Console.WriteLine($" \tYour result is {result}."); |
现在我好像站着,代码工作了,
我一直在搜索有关字符串格式和console.writeline重载方法的vb 2015帮助和google。我看不出任何能解释为什么它是什么的东西。任何建议都将不胜感激。
这是C 6中名为
最简单的理解方法是:插入字符串表达式通过用表达式结果的ToString表示替换包含的表达式来创建字符串。
有关详细信息,请查看msdn。
现在,再多想想。为什么这个功能很棒?
例如,您有类
1 2 3 4 5 6 | public class Point { public int X { get; set; } public int Y { get; set; } } |
创建2个实例:
现在,您要将其输出到屏幕。通常使用的两种方法:
1 | Console.WriteLine("The area of interest is bounded by (" + p1.X +"," + p1.Y +") and (" + p2.X +"," + p2.Y +")"); |
如您所见,像这样连接字符串会使代码难以读取并容易出错。您可以使用
1 | Console.WriteLine(string.Format("The area of interest is bounded by({0},{1}) and ({2},{3})", p1.X, p1.Y, p2.X, p2.Y)); |
这就产生了一个新问题:
出于这些原因,我们应该使用新功能:
1 | Console.WriteLine($"The area of interest is bounded by ({p1.X},{p1.Y}) and ({p2.X},{p2.Y})"); |
编译器现在为您维护占位符,因此您不必担心索引正确的参数,因为您只需将其放在字符串中。
关于全文,请阅读本博客。
String Interpolation
is a concept that languages like Perl have had for quite a while, and
now we’ll get this ability in C# as well. In String Interpolation, we
simply prefix the string with a $ (much like we use the @ for verbatim
strings). Then, we simply surround the expressions we want to
interpolate with curly braces (i.e. { and }):
它看起来很像string.format()占位符,但它不是索引,而是花括号内的表达式本身。事实上,它看起来像string.format()并不奇怪,因为实际上它就是这样——编译器在幕后处理的语法结构就像string.format()。
很重要的一点是,编译器现在为您维护占位符,这样您就不必担心索引正确的参数,因为您只需将其放在字符串中。
阅读更多关于C/.NET的小奇迹:C 6中的字符串插值