为什么我不能在字符串之前使用@ $前缀?

ens*_*tis 5 c# string prefix string-interpolation

所有这些字符串前缀在C#中都是合法的:

  "text"
 @"text"
 $"text"
$@"text"
Run Code Online (Sandbox Code Playgroud)

这不是为什么?

@$"text"
Run Code Online (Sandbox Code Playgroud)

人们会认为这些运算符的顺序无关紧要,因为它们在C#中没有其他含义,而是前缀字符串.我想不出这个倒置的双前缀不能编译的情况.订单是否仅为审美目的而强制执行?

Tho*_*ser 8

这些前缀不是运算符.它们仅由编译器解释.虽然它理解$@它不明白@$.为什么?因为微软的编译团队决定如此.

但是,计划在C#8.0中支持后者


Dav*_*idG 7

不允许使用插值的逐字字符串,除非它们尚未实现.

不过好消息是,在不太遥远的未来C#版本8中,这将是允许的.如果安装Visual Studio 2019预览版,则可以尝试使用它.