为啥我不能在字符串前使用@$ 前缀?
Posted
技术标签:
【中文标题】为啥我不能在字符串前使用@$ 前缀?【英文标题】:Why can't I use @$ prefix before strings?为什么我不能在字符串前使用@$ 前缀? 【发布时间】:2019-01-31 10:16:06 【问题描述】:所有这些字符串前缀在 C# 中都是合法的:
"text"
@"text"
$"text"
$@"text"
为什么不是这个?
@$"text"
人们会认为这些运算符的顺序无关紧要,因为它们在 C# 中没有其他含义,只是作为字符串的前缀。我想不出这种倒置双前缀无法编译的情况。该命令是否仅出于美观目的而执行?
【问题讨论】:
我不认为它们是可交换的:$@""
表示插入逐字字符串,这是有道理的。但是你会让@$""
做什么?将字符串逐字 after 插值 ?
【参考方案1】:
在 C# 版本 8 之前,不允许插入逐字字符串,原因只是它们没有实现。然而,现在这是可能的,所以这两条线都可以工作:
var string1 = $@"text";
var string2 = @$"text";
【讨论】:
【参考方案2】:这些前缀不是运算符。它们仅由编译器解释。虽然它理解$@
,但它不理解@$
。为什么?因为微软的编译器团队如此决定。
不过支持后者的是planned for C# 8.0
【讨论】:
【参考方案3】:根据msDocs
逐字插值字符串以
$
字符开头,后跟@
字符。$ 标记必须出现在逐字插入的 @ 标记之前 字符串。
也许这是他们设计的让当前版本的 c# 编译器可以理解的方式。
【讨论】:
以上是关于为啥我不能在字符串前使用@$ 前缀?的主要内容,如果未能解决你的问题,请参考以下文章