所有这些字符串前缀在C#中都是合法的:
"text"
@"text"
$"text"
$@"text"
Run Code Online (Sandbox Code Playgroud)
这不是为什么?
@$"text"
Run Code Online (Sandbox Code Playgroud)
人们会认为这些运算符的顺序无关紧要,因为它们在C#中没有其他含义,而是前缀字符串.我想不出这个倒置的双前缀不能编译的情况.订单是否仅为审美目的而强制执行?
想象一下这个片段:
using System;
public class Report {
static int Level=0;
public static void WriteLine(string Message) {
Console.WriteLine("{0}{1}",new String(' ',4*Level),Message);
}
public class Indent:IDisposable {
public Indent() { Report.WriteLine("{"); ++Level; }
void IDisposable.Dispose() { --Level; Report.WriteLine("}"); }
}
}
class Program {
static void Main() {
Report.WriteLine("Started");
Report.WriteLine("Calling submethod");
using(new Report.Indent()) {
Report.WriteLine("Submethod started");
using(new Report.Indent()) Report.WriteLine("Subsub, maybe?");
Report.WriteLine("Submethod reporting everything is fine");
Report.WriteLine("Submethod finished");
}
Report.WriteLine("Finished");
}
}
Run Code Online (Sandbox Code Playgroud)
产生结果:
Started
Calling submethod
{
Submethod started
{
Subsub, maybe?
}
Submethod …Run Code Online (Sandbox Code Playgroud)