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

Why can't I use @$ prefix before strings?

所有这些字符串前缀都可以在 C# 中合法使用:

  "text"
 @"text"
 $"text"
$@"text"

为什么不是这个?

@$"text"

人们会认为这些运算符的顺序无关紧要,因为它们在 C# 中没有其他含义,只是为字符串添加前缀。我想不出这种反向双前缀无法编译的情况。该命令是否仅出于美观目的而强制执行?

在 C# 版本 8 之前,不允许插入逐字字符串,没有其他原因,只是它们没有实现。但是,现在这是可能的,所以这两行都可以工作:

var string1 = $@"text";
var string2 = @$"text";

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

不过,对后者的支持是planned for C# 8.0

根据msDocs

A verbatim interpolated string starts with the $ character followed by the @ character.

The $ token must appear before the @ token in a verbatim interpolated string.

也许这就是他们为当前版本的 c# 编译器所设计的方式。