可能重复:
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;
当然,因为你能做到并不意味着这样做是个好主意。
一些有用的情况是代码生成器从模板或外部源创建 C# 代码。例如xsd.exe
,一个 SDK 命令行工具创建备份 XML 模式的 C# 类。如果您的 XML 架构包含在 C# 中保留的元素或属性名称(例如类),xsd.exe
则将在匹配的 C# 类中保留该名称,但会为其添加前缀@
.
这是一个例子,因为我们可以,并不意味着我们应该。