C#方法调用中的'@'符号前缀是什么意思?

9

2
https://dev59.com/I3VD5IYBdhLWcg3wGHiu - xdazz
5个回答

10

@符号可以转义关键字并将其变成普通标识符。大多数 .NET 语言都支持这样的机制,因为关键字是与语言相关的,因此在其他语言编写的代码中可能会不小心与您的语言中的关键字冲突。

有些人喜欢在扩展方法的第一个参数上使用@this

public static void MyExtension(this MyType @this)

还有一种情况下,这个功能非常有用的是当使用成员来表示HTML属性时。如果没有这个功能,则无法表示class属性。


6

如果你需要与使用C#关键字作为标识符的其他语言编写的代码进行交互,可以在任何标识符前加上@符号:

object @class; //allowed
object class;  //error

6
这只是C#中有效标识符定义的一部分

3

@可以让你使用一个本来会被解释为关键词的标识符。

例如,如果你想要定义一个名为"class"的变量,你可以这样写:

int @class;

当然,你可以做到并不意味着这是一个好主意。
一些有用的情况是代码生成器从模板或外部源创建C#代码。例如,xsd.exe是一个SDK命令行工具,它创建支持XML模式的C#类。如果您的XML模式包含在C#中保留的元素或属性名称(例如class),xsd.exe将在匹配的C#类中保留名称,但会在前面加上@前缀。

1

这只是我们做到,并不意味着我们应该这样做的案例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接