2011-11-09 62 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的變量。