2012-02-01 11 views
5

Eventuali duplicati:
What's the use/meaning of the @ character in variable names in C#?
C# prefixing parameter names with @Linq, lambda e @

mi sento come dovrei sapere questo e trovo impossibile google. Qui di seguito è un estratto da un codice Linq mi sono imbattuto:

private static readonly Func<SomeEntities, someThing, List<someThing>> GetReplacement = 
(someEntities, thing) => someEntities.someReplacement.Join(someEntities.someThing, 
          replaces => replaces.new_thing_id, 
          newThing => newThing.thing_id, 
          (rep, newThing) => new {rep, newThing}).Where(
           @t => @t.rep.thing_id == thing.thing_id). 
Select 
(
    @t => @t.newThing 
).ToList().Distinct(new SomeThingComparer()).ToList(); 

Che cosa significa il prefisso '@' in questo contesto?

risposta

14

Di solito, il prefisso @ viene utilizzata se è necessario utilizzare una parola chiave come un identificatore, ad esempio un nome di variabile:

string @string = "..."; 

Il C# spec dice il seguente (sottolineatura mia):

Il prefisso "@" abilita l'uso di parole chiave come identificatori, che è utile quando si interfaccia con altri linguaggi di programmazione. Il carattere @ non è in realtà parte dell'identificatore, quindi l'identificatore potrebbe essere visto in altre lingue come un identificatore normale, senza il prefisso. Un identificatore con un prefisso @ è chiamato identificatore verbatim. L'uso del prefisso @ per identificatori che non sono parole chiave è consentito, ma fortemente scoraggiato come questione di stile.

Dal t non è una parola chiave, direi che il @ dovrebbe essere rimosso nel tuo esempio.

+0

Ha! Sapevo che era qualcosa che avrei dovuto conoscere. Grazie! – Niklas

+0

@Jon Skeet: :) .... –

Problemi correlati