是否建议逃避关键字,例如@类

时间:2011-06-20 15:57:01

标签: c# keyword

在c#中,您可以使用@languagekeyword创建与关键字名称相同的变量。

我的问题是,这什么时候有用?这些好处何时会超过这些缺点呢?

5 个答案:

答案 0 :(得分:6)

使用这些语法的一个简单示例是在Web应用程序中,您可能需要通过提供类似

的对象将某些属性设置为HTML标记。
new { @class = "cssClass" }

如果没有这种语法,这是不可能的。

答案 1 :(得分:6)

CLR可以被许多不同的编程语言作为目标。一种语言的标识符是另一种语言的关键字。如果用一种语言编写的类库不能用于另一种语言会很糟糕,因为声明的方法或属性的名称是该语言中的关键字。

答案 2 :(得分:3)

如果您正在编写代码生成框架并且您的基础模型(例如数据库)可能包含使用关键字的域对象,则最有用。名为“event”的db表或字段。在这种情况下,您可以转义所有名称,并且不会发生冲突。如果添加新关键字,这会使代码生成器向前兼容。

答案 3 :(得分:1)

一般来说:

当你选择自己的名字时,尽量避免使用它。

但是,有时你并不完全可以选择自己的名字。例如,当您移植代码时,或者编写围绕用其他语言编写的代码的包装器时。在这种情况下,我认为最好坚持原始名称,以便API描述仍然与您的代码匹配,而不是考虑新名称,以避免与保留关键字发生冲突。

答案 4 :(得分:0)

不建议使用与保留关键字冲突的变量名称,但有时您可能不希望遵循该规则以提高可读性。

例如:

        var duplicates = from item in Items
                         group item by item.Name into @group
                         where @group.Count() > 1
                         select @group;

它突出了代码的重要部分。

当您需要使用无法更改的第三方代码时,会想到其他情况。