对象@object是什么意思

时间:2011-11-09 17:07:43

标签: c# keyword

我一直在玩事件和代表,需要异步提升我的事件,因此我一直在使用:

public event EventHandler OnHelloEvent;

public void Raise()
{
    IAsyncResult syncResult = OnHelloEvent.BeginInvoke(this, new EventArgs(), null, null)

在Intellisense中,最后null被声明为object @object。我以前没有碰到过这个,似乎找不到任何文件。

这是什么意思?它有用吗?

5 个答案:

答案 0 :(得分:22)

@符号可以被认为是各种各样的“逃逸”字符。由于object是C#中的关键字,因此您不能将其用作变量名称。但是前缀为@字符,它不再是关键字,只是一个有效的变量名称!

答案 1 :(得分:9)

@允许您使用保留关键字作为参数的名称。

答案 2 :(得分:5)

这是转义保留字的特殊字符,以便它们可以用作标识符。

请参阅Section 2.4.2 of the specification

答案 3 :(得分:2)

每个人都回答“这是什么意思?”但没有人回答“它有用吗?”

在大多数情况下,答案是。你应该使用它。

有一些特殊例外。在我的头顶:

  1. 与其他人的代码的互操作性问题:其他人的代码要求您拥有一个名为保留字的变量。也许他们的代码是用不同于C#的保留字的语言编写的。
  2. 计算机生成的代码:伤害使用@符号。如果你对保留字冲突有偏执,你可能会认为计算机生成代码中的所有变量都使用@符号。或者您可能允许非C#程序通过脚本语言或其他任何方式生成C#程序,并且您希望支持名为class的变量。

答案 4 :(得分:0)

@符号只是一个前缀,允许您使用保留的标识符作为变量名。

所以object @object定义了一个名为object的对象类型的变量。