2010-09-26 19 views
10

Khi mã hóa trong C#, tôi nhầm lẫn đã thêm một dấu strudel trước một biến trong câu lệnh if (thay vì dấu chấm than).C# strudel sign

bool b = false; 
if (@b) 
{ 

} 

Tôi ngạc nhiên khi biên dịch thành công mà không có bất kỳ lỗi nào.

Tôi tự hỏi: Ý nghĩa của mã ở trên là gì?

+4

Từ http://en.wikipedia.org/wiki/Strudel - "strudel đã là một phần của ẩm thực Israel kể từ khi sự xuất hiện của rất nhiều người nhập cư từ Trung Âu trong 1920 và 1930, và tên đã được đưa vào tiếng Do Thái (שטרודל) Kể từ khi giới thiệu email, dấu hiệu (@) được gọi là "strudel" trong tiếng Do Thái thông tục. " – herzmeister

+2

Tôi cho rằng họ gọi nó là vì Ốc không phải là kosher. – bmargulies

Trả lời

18

@ có thể được sử dụng để "thoát" số nhận dạng, trong trường hợp bạn muốn sử dụng từ khóa. Ví dụ:

int @class = 10; 

Tất nhiên, bạn nên sử dụng từ khóa làm số nhận dạng, nhưng khó có thể tránh sử dụng thư viện lớp học. Đôi khi cũng hữu ích khi sử dụng "@this" cho các tình huống mà bạn muốn hiệu quả có tham chiếu this, nhưng vì bất kỳ lý do nào bạn không thể sử dụng. (Đây là khá ít và xa giữa, nhưng tôi đã nhìn thấy nó một vài lần, và nó có giá trị ít nhất là biết về.)

+2

Rất ấn tượng, Skeet, nhưng bạn biết gì về strudel? Hmm? : D –

11

Câu trả lời của Jon tóm tắt nó. Một ví dụ về khi bạn phải sử dụng kỹ thuật thoát này là xác định các thuộc tính HTML trong các kiểu vô danh cho các phương thức trợ giúp trong ASP.NET MVC.

Html.ActionLink("text", "action", "controller", 
    new { @class = "some-css-class" }, null); 

Tôi cũng nhấn khi tạo các loại ẩn danh để đăng qua HTTP bằng cách sử dụng mã hóa JSON, nơi bạn không thể sửa đổi API từ xa.

1 cho 'strudel' quá :)