在c#中,您可以使用@languagekeyword
创建与关键字名称相同的变量。
我的问题是,这什么时候有用?这些好处何时会超过这些缺点呢?
答案 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;
它突出了代码的重要部分。
当您需要使用无法更改的第三方代码时,会想到其他情况。