2011-06-20 21 views
2

在c#中,您可以使用@languagekeyword创建与关键字完全相同的变量。是否建议您逃避关键字例如@class

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

+3

几乎从不。在我遇到的最后100,000行代码中,我还没有写/看过它。 – mellamokb

+0

为什么downvote(不管它是谁)? –

回答

6

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

3

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

1

一般情况下:

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

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

6

一个简单的例子为使用这些语法会在您可能需要通过给像

new { @class = "cssClass" } 

对象这不是没有可能设置一些属性的HTML标签的Web应用程序该语法。

0

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

例如:

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

它有点突出的代码的重要组成部分。

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