2011-11-09 13 views
9

Ho giocato in giro con gli eventi e delegati e la necessità di sollevare il mio evento in modo asincrono, quindi ho usato:Cosa oggetto @object significa

public event EventHandler OnHelloEvent; 

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

Nel Intellisense, l'ultimo null si afferma a essere object @object. Non l'ho mai incontrato prima e non riesco a trovare alcuna documentazione per questo.

Cosa significa? È utile?

+4

Vedere http://msdn.microsoft.com/en-us/library/x53a06bb%28v=vs.71%29.aspx: * "Le parole chiave sono identificatori riservati predefiniti che hanno significati speciali per il compilatore. non può essere usato come identificatore nel tuo programma a meno che non includa @ come prefisso. Ad esempio, * '@ if' * è un identificatore legale ma *' if' * non è perché è una parola chiave. "* – Otiel

risposta

19

Il segno @ può essere considerato come un carattere di "escape". Poiché object è una parola chiave in C#, non è possibile utilizzarlo come nome di variabile. Comunque lo prefisso con un carattere @ e non è più una parola chiave, solo un nome di variabile valido!

+0

Brillante, solo che stavo cercando –

9

@ consente di utilizzare parole chiave riservate come nome di un parametro.

0

Il simbolo @ è solo un prefisso che consente di utilizzare un identificatore riservato come nome di variabile.

Quindi object @object, definisce una variabile di tipo oggetto chiamato oggetto.

2

Tutti hanno risposto "Che cosa significa?" ma nessuno ha risposto "È utile?"

Nella maggior parte dei casi, la risposta è No. Si consiglia di utilizzare non.

Ci sono alcune eccezioni speciali. In cima alla mia testa:

  1. Problemi di interoperabilità con il codice di qualcun altro: il codice di qualcun altro richiede di avere una variabile con un nome di una parola riservata. Forse il loro codice è stato scritto in una lingua con diverse parole riservate rispetto a C#.
  2. Codice generato dal computer: non fa male per utilizzare un simbolo @. Se sei paranoico riguardo alle collisioni di parole riservate, potresti decidere che tutte le variabili nel codice generato dal computer useranno un simbolo @. O forse stai permettendo a un programma non C# di generare programmi C# tramite un linguaggio di scripting o qualsiasi altra cosa e vuoi supportare variabili denominate class.