2012-06-06 11 views
7

Necesito diseñar una clase donde un nombre de propiedad tenga que ser return, pero cuando creo un nombre de propiedad como return, aparece un error.¿Cómo uso una palabra clave reservada de C# como nombre de propiedad sin el prefijo @?

Después de algunas investigaciones descubrí que se puede usar una palabra clave reservada como propiedad o nombre de variable agregando un prefijo @ en C#, o encerrándolo entre corchetes [] en VB.NET. Por ejemplo:

var @class = new object(); 

Así que aquí está mi código de diseño de clase.

public class Person 
{ 
    string _retVal; 

    public string @return 
    { 
     get { return _retVal; } 
     set { _retVal = value; } 
    } 
} 

... 
Person p = new Person(); 
[email protected] = "hello"; 

Ahora no estoy recibiendo ningún error, pero cuando intento acceder a la propiedad como nombre return entonces tengo que escribir el nombre como @return, lo que no quiero. Quiero acceder al nombre de la propiedad como p.return = "hello"; en lugar de [email protected] = "hello";, por lo que me gustaría saber si hay alguna forma de hacerlo.

+10

Por qué empeñado en usando palabra clave reservada? –

+3

no me parece razonable. En su lugar, podría usar un nombre de "Retorno" que no sea una palabra clave reservada. –

+2

¿Por qué no llamarlo 'p.Return'? – phg

Respuesta

25

No puede. Es una palabra clave reservada. Que significa "no se puede". Contraste con las "palabras clave contextuales", lo que generalmente significa "lo agregamos más tarde, por lo que necesitamos que funcione en algunos escenarios preexistentes".

La respuesta moderada aquí es: use @return.

Una mejor respuesta aquí es: cambie el nombre de su propiedad. Tal vez ReturnValue.

También existe la opción de, por ejemplo, Return - pero también es posible que necesite pensar en idiomas que no distinguen entre mayúsculas y minúsculas.

+1

+1 para considerar idiomas que no distinguen entre mayúsculas y minúsculas. Mucha gente se olvida de ellos al nombrar cosas – MattDavey

-2

No hay forma de lograr esto porque las palabras clave reservadas son identificadores reservados predefinidos que tienen significados especiales para el compilador.

es mejor que cambie el nombre de la propiedad y lo utiliza en su código ... algo como se da en respuesta @Marc ...

+8

... entonces ¿por qué repite la respuesta de Marc? :) –

0

Puede cambiar el nombre de los espacios de nombres como esto:

using Test = System.Diagnostics; 
Cuestiones relacionadas