为什么添加@符号可以使这个工作?

时间:2009-03-27 18:36:40

标签: c# asp.net-mvc

我正在使用asp.net mvc并创建一个表单。我想在表单标记中添加一个class属性。

我找到了添加enctype属性的示例here,并尝试与类交换。访问视图时出现编译错误。

然后我找到了一个例子,有人在属性名称的开头添加@符号并且有效。伟大的它是有效的,但我是一个需要知道原因,快速的谷歌搜索没有帮助。我知道C#允许在字符串前加上@来忽略转义字符。为什么它在这种情况下有效? @告诉编译器什么?

产生编译错误的代码?

 <% Html.BeginForm("Results", "Search", 
    FormMethod.Get, new{class="search_form"}); %>

有效的代码:

 <% Html.BeginForm("Results", "Search", 
    FormMethod.Get, new{@class="search_form"}); %>

1 个答案:

答案 0 :(得分:37)

在C#中,“class”是保留关键字 - 在保留关键字的前面添加“@”符号,可以将关键字用作标识符。

这是一个直接来自C#规范的例子:

class @class {
    public static void @static(bool @bool) {
        if (@bool) System.Console.WriteLine("true");
        else System.Console.WriteLine("false");
    }
}

注意:这当然是一个例子,不推荐练习。