可能是重复问题:
在C#中变量名前的字符@有什么用/意义?
我在进行.NET开发时注意到,我可以在任何方法调用之前添加@符号,例如:
var message = dog.@SayHello();
只是想知道,这可以做的原因是什么?
可能是重复问题:
在C#中变量名前的字符@有什么用/意义?
我在进行.NET开发时注意到,我可以在任何方法调用之前添加@符号,例如:
var message = dog.@SayHello();
@
符号可以转义关键字并将其变成普通标识符。大多数 .NET 语言都支持这样的机制,因为关键字是与语言相关的,因此在其他语言编写的代码中可能会不小心与您的语言中的关键字冲突。
有些人喜欢在扩展方法的第一个参数上使用@this
。
public static void MyExtension(this MyType @this)
还有一种情况下,这个功能非常有用的是当使用成员来表示HTML属性时。如果没有这个功能,则无法表示class
属性。
如果你需要与使用C#关键字作为标识符的其他语言编写的代码进行交互,可以在任何标识符前加上@
符号:
object @class; //allowed
object class; //error
@
可以让你使用一个本来会被解释为关键词的标识符。
例如,如果你想要定义一个名为"class"的变量,你可以这样写:
int @class;
xsd.exe
是一个SDK命令行工具,它创建支持XML模式的C#类。如果您的XML模式包含在C#中保留的元素或属性名称(例如class),xsd.exe
将在匹配的C#类中保留名称,但会在前面加上@
前缀。这只是我们能做到,并不意味着我们应该这样做的案例。