如何使用 C# 关键字作为属性名称?

Posted

技术标签:

【中文标题】如何使用 C# 关键字作为属性名称?【英文标题】:How do I use a C# keyword as a property name? 【发布时间】:2010-09-30 02:13:39 【问题描述】:

使用 asp.net MVC 我想在视图中执行此操作:

<%= html.TextBox("textbox1", null, new  class="class1" ) %>

此语句无法编译,因为 class 是 C# 中的关键字。我想知道如何转义属性名称以便编译。

如果我将“class”属性更改为“Class”(大写 C),则可以编译它。但这并不合适,因为严格的 xhtml 规定所有属性(和元素)名称都必须小写。

【问题讨论】:

【参考方案1】:

您可以在 C# 中使用关键字作为标识符,方法是在它们前面加上 @。

var @class = new object();

引用 C# Keywords 上的 MSDN 文档:

关键字是预定义的、保留的标识符,具有特殊的 对编译器的意义。它们不能用作您的标识符 除非它们包含 @ 作为前缀。例如,@if 是有效的 标识符但 if 不是因为 if 是关键字。

【讨论】:

+1 因为我不知道。但我认为你应该考虑根本不这样做,尽可能远离关键字-即非关键字(C#、SQL、python、诸如此类)。拿出你的词库,找到你想说的同义词。 在使用其他语言定义的东西时需要这样做。它们可以有不同的保留字列表,因此在原始语言中完全有效的内容在 C# 中可能无法访问,反之亦然。 确实,Rob,问题中的示例(“class”)是“用两种语言定义”(C# 和 HTML)的一个很好的例子。 我链接到的博客文章的作者确实有一个好点。有时 return 似乎是完美的变量名。 当你想不出别的东西并且 rc(返回码)似乎不合适时,使用 result 代替 return。

以上是关于如何使用 C# 关键字作为属性名称?的主要内容,如果未能解决你的问题,请参考以下文章

C# - 使用属性名称作为字符串按属性排序的代码[重复]

如何在 C# 中使用类型和属性名称从 XML 创建动态对象?

如何使用 XmlSerializer 类对象将具有相同名称的 2 个子元素组合成单个属性是 C#

如何在c#中使用具有相同名称但不同属性和结构的元素反序列化XML

如何在 C# 中迭代​​匿名对象的属性?

通过对象的名称作为字符串 c# 访问对象