所有这些字符串前缀在C#中合法使用:
"text"
@"text"
$"text"
$@"text"
这不是为什么吗?
@$"text"
人们会认为这些运算符的顺序无关紧要,因为它们在C#中除了前缀字符串之外没有其他含义。我想不出这种反向双前缀无法编译的情况。该命令是否仅出于美学目的执行?
答案 0 :(得分:8)
这些前缀不是运算符。它们仅由编译器解释。尽管它了解$@
,但不了解@$
。为什么?因为微软的编译器团队决定这样做。
但是,对后者的支持是planned for C# 8.0
答案 1 :(得分:7)
不允许插入内插逐字字符串,除其他原因外,没有其他原因。
好消息是,在不久的将来即将发布的C#版本8中,将允许这样做。如果安装Visual Studio 2019预览版,则可以尝试一下。
答案 2 :(得分:1)
根据msDocs
逐字插入的字符串以
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const AdminSchema = new Schema({ name: { type: String, required: true }, email: { type: String, required: true, maxlength: 1 }, skype_id: { type: String }, password: { type: String, required: true } });
字符开头,后跟$
字符。在插入的逐字记录中,$令牌必须出现在@令牌之前 字符串。
也许这是它们被设计为当前版本的C#编译器可以理解的方式。