2012-02-01 26 views
5

thể trùng lặp:
What's the use/meaning of the @ character in variable names in C#?
C# prefixing parameter names with @LINQ, lambda và @

tôi cảm thấy như tôi nên biết điều này và tôi thấy không thể google. Dưới đây là đoạn trích từ một số mã LINQ mà tôi đã xem:

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

Tiền tố '@' có nghĩa là gì trong ngữ cảnh này?

Trả lời

14

Thông thường, tiền tố @ được sử dụng nếu bạn cần phải sử dụng một từ khóa như một định danh, chẳng hạn như một tên biến:

string @string = "..."; 

Các C# spec nói như sau (tôi nhấn mạnh):

Tiền tố "@" cho phép sử dụng từ khóa làm số nhận dạng, điều này hữu ích khi giao tiếp với các ngôn ngữ lập trình khác. Ký tự @ không thực sự là một phần của số nhận dạng, do đó, số nhận dạng có thể được nhìn thấy bằng các ngôn ngữ khác dưới dạng số nhận dạng thông thường, không có tiền tố. Mã định danh có tiền tố @ được gọi là số nhận dạng nguyên văn. Sử dụng tiền tố @ cho số nhận dạng không phải là từ khóa được phép, nhưng không được khuyến khích mạnh mẽ như một vấn đề về phong cách.

Kể từ t không phải là một từ khóa, tôi muốn nói rằng @ cần được loại bỏ trong ví dụ của bạn.

+0

Ha! Tôi biết đó là điều tôi nên biết. Cảm ơn! – Niklas

+0

@Jon Skeet: :) .... –

Các vấn đề liên quan