c#方法调用上的'@'符号前缀?

Jos*_*ruz 9 .net c# method-call

可能重复:
C#中变量名中@字符的用法/含义是什么?

我正在做一些.net开发,我注意到我可以在任何方法调用之前添加@符号,即:

var message = dog.@SayHello();
Run Code Online (Sandbox Code Playgroud)

只是想知道,为什么这可以做到?

Cod*_*aos 10

@符号可以逃脱的关键字,并把他们变成普通的标识符.大多数.net语言都支持这样的机制,因为关键字是依赖于语言的,因此用其他语言编写的代码可能会与您的语言中的关键字冲突,甚至没有注意到它.

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

public static void MyExtension(this MyType @this)
Run Code Online (Sandbox Code Playgroud)

另一种可能有用的方案是使用成员来表示html属性.然后,如果没有此功能,则无法表示该class属性.


Mar*_*ade 6

一个@符号可以预先固定在你写在使用C#关键字作为标识符另一种语言的代码互操作情况下,任何标识:

object @class; //allowed
object class;  //error
Run Code Online (Sandbox Code Playgroud)