2012-06-06 16 views
7

Devo progettare una classe in cui il nome di una proprietà deve essere return, ma quando creo un nome di proprietà come return, viene visualizzato un errore.Come si usa una parola chiave riservata C# come nome di una proprietà senza il prefisso @?

Dopo alcune ricerche ho scoperto che si può usare una parola chiave riservata come una proprietà o nome di variabile con l'aggiunta di un prefisso @ in C#, oppure racchiudendolo tra parentesi quadre [] in VB.NET. Ad esempio:

var @class = new object(); 

Quindi ecco il codice di progettazione della mia classe.

public class Person 
{ 
    string _retVal; 

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

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

Ora io non ricevo alcun errore, ma quando provo ad accedere nome proprietà come return poi ho bisogno di scrivere il nome come @return, che io non voglio. Voglio accedere al nome della proprietà come p.return = "hello"; invece di [email protected] = "hello"; quindi mi piacerebbe sapere se c'è un modo per farlo?

+10

Perché piegato su usando la parola chiave riservata? –

+3

non mi sembra ragionevole. Potresti usare invece un nome "Ritorna" che non è una parola chiave riservata. –

+2

Perché non chiamarlo 'p.Return'? – phg

risposta

25

Non è possibile. È una parola chiave riservata . Che significa "" non puoi ". Contrasto a "parole chiave contestuali" che in genere significa "l'abbiamo aggiunto in seguito, quindi avevamo bisogno che funzionasse in alcuni scenari preesistenti".

La risposta moderata è: utilizzare @return.

Una risposta migliore è la seguente: rinominare la proprietà. Forse ReturnValue.

C'è anche l'opzione, ad esempio, Return - ma potrebbe essere necessario pensare anche a lingue maiuscole e minuscole.

+1

+1 per considerare le lingue insensibili alle maiuscole/minuscole - molte persone si dimenticano di loro quando nominano le cose – MattDavey

-2

Impossibile ottenere questo perché le parole chiave riservate sono identificativi riservati e riservati che hanno significati speciali per il compilatore.

è meglio si modifica il nome della proprietà e utilizzarlo in voi codice ... qualcosa come indicato nella risposta @ Marc ...

+8

... allora perché ripetere la risposta di Marc? :) –

0

È possibile rinominare i namespace in questo modo:

using Test = System.Diagnostics; 
Problemi correlati