2013-03-06 28 views
7

Tôi nghĩ rằng câu hỏi của tôi là khác nhau từ này: What's the @ in front of a string in C#?@ nằm trước biến số/số nhận dạng trong C# là gì?

Tôi làm việc trong VB.net, vì vậy điều này có thể có một số điều đơn giản trong C#, nhưng tôi không biết về điều này.

Tôi nhận được mã sau đây, trong đó tôi có 10 XML bên trong một biến chuỗi. Xin tư vấn những gì biểu tượng @ là cần thiết ở phía trước của biến chuỗi claimsList khi gọi phương pháp LoadXml trong đoạn mã dưới đây:

private void UploadNewClaims(PMAUser grumble, string companyAbbreviation, string claimsList) 
{ 
    var claimDoc = new System.Xml.XmlDocument(); 
    claimDoc.LoadXml(@claimsList); 

Trả lời

20

Trong trường hợp này nó hoàn toàn không cần thiết, nhưng nó cho phép bạn sử dụng bất kỳ từ khóa như một định danh trong C#. Nó không thay đổi ý nghĩa của mã định danh, hoặc nó được sử dụng như thế nào - nó chỉ báo cho trình biên dịch rằng bạn không muốn các ký tự sau được nhận dạng dưới dạng từ khóa.

Ví dụ:

string @int = "hello"; 
var @void = @int; 

Sử dụng nó cho một định danh của claimsList gợi ý rằng bất cứ ai đã viết nó không hiểu nó. Thực tế là số nhận dạng dành cho biến chuỗi là hoàn toàn không có liên quan ở đây.

Cá nhân tôi đã khá nhiều chỉ từng sử dụng các tính năng cho các phương pháp mở rộng, nơi mà tôi đã được biết đến để kêu gọi các tham số đầu tiên @this:

public static void Foo(this Bar @this) 
{ 
    return @this.Baz() * 2; 
} 
+1

đẹp giải thích .. – Smaug

+1

Tôi tưởng tượng rằng @ là có vì tại một thời điểm nó là một chuỗi đường dẫn chữ như @ "C: \ path". Tôi giả sử rằng khi nó được thay đổi thành biến, người thực hiện thay đổi không hiểu cú pháp @ "" và để lại @ tại chỗ. – Grokys

+0

Và tôi đã googled rằng bởi vì tôi đã nhìn thấy '@ this' như tham số cho một phương pháp mở rộng hah. Hell thats hữu ích. Một điểm được hiển thị nhưng không được viết: 'Bạn phải sử dụng @variable cũng khi gọi, không chỉ cho khai báo'. – C4u

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