是否建议转义关键字,例如@class

本文关键字:例如 @class 关键字 转义 是否 | 更新日期: 2023-09-27 18:00:00

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

我的问题是,这什么时候有用?什么时候利大于弊?

是否建议转义关键字,例如@class

许多不同的编程语言都可以针对CLR。一个语言的标识符是另一种语言的关键字。如果用一种语言编写的类库不能从另一种语言使用,那就太糟糕了,因为声明的方法或属性的名称是该语言中的关键字。

使用这些语法的一个简单示例是在web应用程序中,您可能需要通过提供类似的对象来为HTML标记设置一些属性

new { @class = "cssClass" }

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

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

一般情况下:

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

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

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

例如:

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

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

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