2011-01-19 37 views
13

Possible Duplicates:
What does the @ symbol before a variable name mean in C#?
What's the use/meaning of the @ character in variable names in C#?'@' char có nghĩa là gì trước tên tham số trong khai báo phương thức?

Hi,

Tôi có một câu hỏi nhanh chóng. '@' Char có nghĩa là gì trước tên tham số trong khai báo phương thức? Như sau:

protected void Method1(Type1 @arg1, Type2 arg2) 
... 

Tôi sử dụng C# với .net 3.5.

Cảm ơn.

+1

Đây là một nhân vật chạy thoát, cho phép bạn sử dụng các từ dành riêng như định danh. Câu hỏi này được hỏi rất nhiều. Xem: http://stackoverflow.com/questions/429529/what-does-the-symbol-before-a-variable-name-mean-in-c –

Trả lời

16

Nó cho phép các từ dành riêng được sử dụng làm số nhận dạng. Nó thường được sử dụng bởi các trình tạo mã có thể sử dụng tên nguồn từ các hệ thống có từ khóa khác với ngôn ngữ đích, ví dụ: tên bảng và tên đối số sproc.

+1

'arg1' là một từ dành riêng? – BoltClock

+1

@BoltClock: Vâng, đôi khi nó được sử dụng một cách siêu nhiên. Tôi chỉ có thể tưởng tượng người lập trình ban đầu làm điều này không có ý tưởng nó có nghĩa là gì, nhưng nhìn thấy nó ở đâu đó và nghĩ rằng nó trông thật tuyệt. Hoặc, như câu trả lời chỉ ra, điều này đôi khi được thực hiện bởi các trình tạo mã tự động. –

+1

@BoltClock Không có, nhưng trình tạo mã không biết điều đó.Các trình tạo mã thường đặt ký hiệu @ ở phía trước tất cả các mã định danh. –

7

Đó là cách thoát khỏi số nhận dạng.

Ví dụ: hai sau là tương đương:

protected void Method1(Type1 @arg1, Type2 arg2) 
protected void Method1(Type1 arg1, Type2 arg2) 

@ chỉ thực sự hữu ích nếu bạn cần phải đặt tên cho một định danh sau một từ khóa. Các bên dưới sẽ không biên dịch mà không có sự @:

protected void Method1(Type1 @class, Type2 arg2)

1

Ví dụ cụ thể của bạn, nó không có ý nghĩa. Trong C#, biểu tượng @ được sử dụng để thoát khỏi các từ khóa để chúng có thể được sử dụng như các tên biến.

Ví dụ, sau đây sẽ tạo ra một lỗi biên dịch:

public void Test(string class){...} 

Nhưng nếu bạn thoát với @, nó là tốt:

public void Test(string @class){...} 
2

Nó được sử dụng để có các từ dành riêng như thông số. Ví dụ:

string @string = "abc"; 

hay:

string @class = "foo"; 

arg1 không phải là một từ dành riêng để sử dụng @ là không cần thiết. Điều này đang được nói, sử dụng các từ dành riêng để đặt tên cho các tham số của bạn không phải là một ý tưởng hay. Có trường hợp mặc dù nơi này là hữu ích. Ví dụ trong ASP.NET MVC một số phương pháp mở rộng HTML có một đối tượng vô danh như tham số để phát ra các thuộc tính html. Vì vậy, bạn có cú pháp như sau:

<%= Html.ActionLink("text", "action", "controller", null, new { @class = "abc" }) %> 

mà tạo ra:

<a href="/controller/action" class="abc">text</a> 
Các vấn đề liên quan