可能重复:
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的含义是什么?如下:
protected void Method1(Type1 @arg1, Type2 arg2)
...
我使用c#和.net 3.5。
感谢。
答案 0 :(得分:20)
它允许将保留字用作标识符。它通常由代码生成器使用,代码生成器可以使用具有与目标语言不同的关键字的系统的源名称,例如,表名和sproc参数名。
答案 1 :(得分:8)
这是一种逃避标识符的方法。
E.g。以下两个是等价的:
protected void Method1(Type1 @arg1, Type2 arg2)
protected void Method1(Type1 arg1, Type2 arg2)
如果您需要在关键字后面命名标识符, @
才真正有用。如果没有@
:
protected void Method1(Type1 @class, Type2 arg2)
答案 2 :(得分:3)
用于将保留字作为参数。例如:
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>
答案 3 :(得分:2)
对于您的具体示例,它没有任何意义。在C#中,@符号用于转义关键字,以便它们可以用作变量名。
例如,以下内容会生成编译器错误:
public void Test(string class){...}
但如果你用@逃脱,那很好:
public void Test(string @class){...}