为什么我不能在字符串前使用@$ 前缀?
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# 编译器所设计的方式。
所有这些字符串前缀都可以在 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# 编译器所设计的方式。