2011-11-09 59 views
9

我一直在与事件和代表们玩耍,需要异步提高我的活动,所以我一直在使用:是什么对象@object意味着

public event EventHandler OnHelloEvent; 

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

在智能感知,最后null据称是object @object。我以前没有遇到过这种情况,似乎也找不到任何文档。

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

+4

请参阅http://msdn.microsoft.com/en-us/library/x53a06bb%28v=vs.71%29.aspx:*“关键字是对编译器有特殊含义的预定义保留标识符。除非包含@作为前缀,否则不能用作程序中的标识符。例如,*'@ if' *是合法标识符,但* if'*不是因为它是关键字。“* – Otiel

回答

19

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

+0

我在寻找 –

0

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

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

2

大家回答“这是什么意思?”但没有人回答“它有用吗?”

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

有几个特殊的例外。我的头顶上:

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