可能重复:
What's the use/meaning of the @ character in variable names in C#?
我正在做一些.net开发,我注意到我可以在任何方法调用之前添加 @ 符号,即:
var message = dog.@SayHello();
只是想知道,为什么这样做可以做到?
答案 0 :(得分:10)
@
符号可以转义关键字并将其转换为普通标识符。大多数.net语言支持这样的机制,因为关键字取决于语言,因此用其他语言编写的代码可能会与您的语言中的关键字冲突,甚至没有注意到它。
有些人喜欢使用@this
作为第一个参数扩展方法。
public static void MyExtension(this MyType @this)
另一种可能有用的方案是使用成员来表示html属性。然后,如果没有此功能,则无法表示class
属性。
答案 1 :(得分:6)
如果您使用另一种使用C#关键字作为标识符的语言编写的代码进行互操作,则@
符号可以预先固定到任何标识符:
object @class; //allowed
object class; //error
答案 2 :(得分:6)
答案 3 :(得分:3)
@
允许您使用否则将被解释为关键字的标识符。
例如,如果您想要一个名为class的变量,可以这样写:
int @class;
当然,因为你能做到并不意味着这样做是个好主意。
某些有用的情况是代码生成器,它可以从模板或外部源创建C#代码。例如xsd.exe
是一个SDK命令行工具,用于创建备份XML模式的C#类。如果您的XML架构包含在C#中保留的元素或属性名称(例如类),xsd.exe
将在匹配的C#类中保留该名称,但它将在其前面添加@
。
答案 4 :(得分:1)
这只是因为我们可以,并不意味着我们应该。