2012-02-01 19 views
5

Powiel możliwe:
What's the use/meaning of the @ character in variable names in C#?
C# prefixing parameter names with @LINQ, lambda i @

czuję się jak mam wiedzieć to i uważam, że to niemożliwe, aby google. Poniżej znajduje się wyciąg z jakiegoś kodu Linq natknąłem:

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(); 

Co oznacza „@” prefiks oznacza w tym kontekście?

Odpowiedz

14

Zazwyczaj przedrostek @ jest używana, gdy trzeba użyć słowa kluczowego jako identyfikator, takie jak nazwy zmiennej:

string @string = "..."; 

C# spec mówi następujący (kopalnia nacisk):

Prefiks "@" umożliwia użycie słów kluczowych jako identyfikatorów, co jest przydatne w przypadku łączenia się z innymi językami programowania. Znak @ nie jest częścią identyfikatora, więc identyfikator może być widoczny w innych językach jako normalny identyfikator, bez prefiksu. Identyfikator z prefiksem @ jest nazywany dosłownym identyfikatorem. Użycie przedrostka @ do identyfikatorów niebędących słowami kluczowymi jest dozwolone, ale zdecydowanie odradzane ze względu na styl.

t Ponieważ nie jest to słowo kluczowe, powiedziałbym, że @ powinny zostać usunięte w swoim przykładzie.

+0

Ha! Wiedziałem, że to coś, co powinienem był wiedzieć. Dzięki! – Niklas

+0

@ Jon Skeet: :) .... –

Powiązane problemy