2011-11-09 21 views
9

He estado jugando con los eventos y los delegados y la necesidad de levantar mi caso de forma asíncrona, por lo que he estado usando:¿Qué significa @object objeto

public event EventHandler OnHelloEvent; 

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

En Intellisense, el último null se afirma que ser object @object. No me he encontrado con esto antes y no puedo encontrar ninguna documentación para ello.

¿Qué significa esto? ¿Es útil?

+4

Ver http://msdn.microsoft.com/en-us/library/x53a06bb%28v=vs.71%29.aspx: * "Las palabras clave son identificadores reservados predefinidos que tienen un significado especial para el compilador. no se pueden usar como identificadores en su programa a menos que incluyan @ como prefijo. Por ejemplo, * '@ if' * es un identificador legal pero *' if' * no es porque sea una palabra clave. "* – Otiel

Respuesta

19

El signo @ se puede considerar como un tipo de carácter de "escape". Como object es una palabra clave en C#, no puede usarlo como nombre de variable. Sin embargo, prefímalo con un carácter @ y ya no es una palabra clave, ¡solo un nombre de variable válido!

+0

Brillante, qué estaba buscando –

9

@ le permite utilizar palabras clave reservadas como el nombre de un parámetro.

0

El símbolo @ es solo un prefijo que le permite usar un identificador reservado como nombre de variable.

Así object @object, define una variable de tipo objeto llamado objeto.

2

Todos respondieron "¿Qué significa esto?" pero nadie respondió "¿Es útil?"

En la mayoría de los casos, la respuesta es No. Debe no usar esto.

Existen algunas excepciones especiales. De la parte superior de mi cabeza:

  1. problemas de interoperabilidad con el código de otra persona: Código de alguien más requiere que tenga una variable con un nombre de una palabra reservada. Tal vez su código fue escrito en un idioma con diferentes palabras reservadas que C#.
  2. Código generado por computadora: No duele para usar un símbolo @. Si está paranoico con respecto a las colisiones de palabras reservadas, puede decidir que todas las variables en el código generado por la computadora usen un símbolo @. O tal vez está permitiendo que un programa que no sea de C# genere programas de C# a través de un lenguaje de scripting o lo que sea y desea admitir variables llamadas class.
Cuestiones relacionadas