一尘不染

$在字符串前是什么意思?

c#

我打算使用逐字字符串,但我错误地键入$而不是@

但是编译器没有给我任何错误,并且编译成功。

我想知道它是什么,它做什么。我搜索了它,但找不到任何东西。

但是,它不像逐字字符串,因为我不会写:

string str = $"text\";

有谁知道$字符串在C#中代表什么。

string str = $"text";

我正在使用Visual Studio 2015 CTP。


阅读 558

收藏
2020-05-19

共1个答案

一尘不染

$String.FormatC#6的新功能,它是字符串插值的简写形式,并且与字符串插值一起使用。在您的情况下,它什么也不string.Format()做,就像什么也不做一样。

当用于参考其他值来构建字符串时,它是独立存在的。以前必须这样写:

var anInt = 1;
var aBool = true;
var aString = "3";
var formated = string.Format("{0},{1},{2}", anInt, aBool, aString);

现在变成:

var anInt = 1;
var aBool = true;
var aString = "3";
var formated = $"{anInt},{aBool},{aString}";

还有一种替代方法-鲜为人知-使用字符串内插的形式$@
(两个符号的顺序很重要)。它允许@""混合字符串的功能$""以支持字符串插值,而无需\\整个字符串。所以下面两行:

var someDir = "a";
Console.WriteLine($@"c:\{someDir}\b\c");

将输出:

c:\a\b\c
2020-05-19