Domanda

Ho scoperto che è possibile avviare il nome della variabile con il carattere '@' in C#.Nel mio progetto C# stavo utilizzando un servizio web (io ho aggiunto un riferimento web per il mio progetto) che è stato scritto in Java.Uno degli oggetti dell'interfaccia definite nel file WSDL era un membro di una variabile con il nome di "params".Ovviamente questa è una parola riservata in C#, in modo che non si può avere una classe con un membro di una variabile con il nome di "params".Oggetto proxy che è stato generato conteneva una struttura che assomiglia a questo:

public ArrayList @params {
    get { return this.paramsField; }
    set { this.paramsField = value; }
}

Ho cercato attraverso il VS 2008 c# la documentazione ma non ho trovato nulla a riguardo.Anche cercando con Google non mi ha dato delle risposte utili.Allora, qual è l'esatto significato o l'uso del carattere '@' a di una variabile/proprietà del nome?

È stato utile?

Soluzione

Direttamente dal Specifiche Del Linguaggio C# , Identificatori (C#) :

Il prefisso "@" consente l'utilizzo di parole chiave come identificatori, che è utile quando ci si interfaccia con altri i linguaggi di programmazione.Il carattere @ non è in realtà parte della identificatore, in modo che l'identificatore può essere visto in altre lingue, come un normale identificatore, senza il prefisso.Un identificatore con un prefisso @ si chiama un verbatim identificatore.

Altri suggerimenti

Esso consente solo di utilizzare una parola riservata di un nome di variabile.Non raccomandato IMHO (tranne che in casi come avete).

In C# il carattere @ è usato per indicare i valori letterali che, esplicitamente, di non rispettare le pertinenti norme in lingua spec.

In particolare, può essere utilizzato per i nomi di variabili che si scontrano con le parole chiave riservate (es.non è possibile utilizzare params ma è possibile utilizzare @params invece, lo stesso con fuori/ref/qualsiasi altra parola chiave nella specifica del linguaggio).Inoltre può essere utilizzato per escape valori letterali stringa;questo è particolarmente rilevante con percorso costanti, ad es.invece di path = "c:\\temp\\somefile.txt" si può scrivere path = @"c:\temp\somefile.txt".E ' anche molto utile per le espressioni regolari.

A differenza di Perl sigilli, un @ prefisso prima del nome di una variabile in C# non ha alcun significato.Se x è una variabile, @x è un altro nome per la stessa variabile.

> string x = "abc";
> Object.ReferenceEquals(x, @x).Dump();
True

Ma il @ prefisso di non avere un utilizzare, come hai scoperto - si può utilizzare per chiarire variabili i nomi che C# altrimenti rifiutare come illegale.

> string string;
Identifier expected; 'string' is a keyword

> string @string;

Il @ simbolo consente di utilizzare parole chiave riservate per il nome della variabile.come @int, @string, @double ecc.

Per esempio:

string @public = "Reserved Keyword used for me and its fine";

Il codice sopra funziona bene, ma al di sotto non funziona:

string public = "This will not compile";

Semplicemente ti permette di usare parole riservate come nomi di variabili.Volevo un var chiamato event l'altro giorno.Stavo per andare con _event invece, ma il mio collega mi ha ricordato che ho potuto solo chiamare @event invece.

Un altro caso d'uso è in metodi di estensione.Il primo, in particolare parametro può essere distinto per indicare il suo vero significato con @this nome.Un esempio:

public static TValue GetValueOrDefault<TKey, TValue>(
    this IDictionary<TKey, TValue> @this,
    TKey key,
    TValue defaultValue)
    {
        if (!@this.ContainsKey(key))
        {
            return defaultValue;
        }

        return @this[key];
    }

Se vogliamo usare una parola chiave come il nome di un identificatore, si ottiene un errore di compilazione “identificatore previsto, ‘Identificativo’ è una parola chiave” Per risolvere questo errore, prefisso l'identificatore con “@”.Gli identificatori sono verbatim identificatori.Il carattere @ non è in realtà parte dell'identificatore, in modo che l'identificatore può essere visto in altre lingue come un normale identificatore, senza il prefisso

Si può usare per utilizzare le parole chiave riservate come nome di variabile come

 int @int = 3; 

il compilatore ignora il @ e compilare la variabile come int

non è una pratica comune utilizzare il pensiero

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top