2011-01-19 59 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是什麼意思?

嗨,

我有一個快速的問題。方法聲明中的參數名稱前的'@'char是什麼意思?如下所示:

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

我使用c#與.net 3.5。

謝謝。

+1

這是一個轉義字符,它允許您使用保留字作爲標識符。這個問題被問到很多。請參閱:http://stackoverflow.com/questions/429529/what-does-the-symbol-before-a-variable-name-mean-in-c – 2011-01-19 14:18:15

回答

16

它允許保留字用作標識符。它通常被代碼生成器使用,其可能使用來自具有與目標語言不同的關鍵字的系統的源名稱,例如表名和sproc參數名稱。

+1

`arg1`是一個保留字? – BoltClock 2011-01-19 14:18:22

7

這是一種轉義標識符的方法。

E.g.下面兩個是等價的:

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

@是唯一真正有用的,如果您需要命名一個關鍵字後的標識符。以下爲無法編譯沒有@

protected void Method1(Type1 @class, Type2 arg2)

1

爲了您的具體的例子,它沒有什麼意義。在C#中,@符號用於轉義關鍵字,以便它們可以用作變量名稱。

例如,以下將生成一個編譯器錯誤:

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

但是如果你@逃脫,它是好的:

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

它是用來已保留字作爲參數。例如:

string @string = "abc"; 

或:

string @class = "foo"; 

arg1不是那麼使用@保留的字是沒有必要的。這就是說,使用保留字命名參數不是一個好主意。有些情況下,這是有用的。例如,在ASP.NET MVC中,一些HTML擴展方法將匿名對象作爲參數發送html屬性。所以,你有語法是這樣的:

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

產生:

<a href="/controller/action" class="abc">text</a> 
相關問題