c# @ 停止字符串中的转义字符,让字符串内的转义字符当正常字符输入。
因此,如果你需要类似“所见所得”效果的赋值,逐字字符串赋值方式会是你的首选!
此外,需要注意的是,当使用符号 "@" 为字符串赋值时,被赋值的所有字符将不需要经过转义——只有双引号这个本身作为界限的字符需要经过转义,此时它的转义输入方法是两个放在一起的双引号:""
在以这种方式给变量赋值时,也只有这唯一一个转义是合法的。如果希望诸如换行、制表符此类字符在字符串体现出来,也可以直接将带有换行与制表符的字面量字符串赋给字符串量;不过这样,就不能在换行前的前一行写注释或其他语句,否则这些语句将被当作字符串值的一部分。
static void Main(string[] args) { Console.WriteLine("now test \' it \" look like{0}f", 77);//now test ' it " look like77f Console.WriteLine(@"now test it "" look like{0}", 232); // now test\' it “look like232 }
c# $ 内插字符串的结构
要在内插字符串生成的文本中包含大括号 "{" 或 "}",请使用两个大括号,即 "{{" 或 "}}"。 有关详细信息,请参阅转义大括号。
因为冒号(“:”)在内插表达式项中具有特殊含义,为了在内插表达式中使用条件运算符,请将表达式放在括号内。
以下示例演示如何将大括号含入结果字符串中,以及如何在内插表达式中使用条件运算符:
string name = "Horace"; int age = 34; Console.WriteLine($"He asked, \"Is your name {name}?\", but didn't wait for a reply :-{{"); Console.WriteLine($"{name} is {age} year{(age == 1 ? "" : "s")} old.");
// Expected output is: // He asked, "Is your name Horace?", but didn't wait for a reply :-{ // Horace is 34 years old.
从 C# 8.0 开始,可以按任意顺序使用 $
和 @
标记:$@"..."
和 @$"..."
均为有效的内插逐字字符串。 在早期 C# 版本中,$
标记必须出现在 @
标记之前。