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

时间:2011-08-30 15:20:18

标签: c# .net method-call

  

可能重复:
  What's the use/meaning of the @ character in variable names in C#?

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

var message = dog.@SayHello();

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

5 个答案:

答案 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)

这只是因为我们可以,并不意味着我们应该