如何使用 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# 中使用类型和属性名称从 XML 创建动态对象?
如何使用 XmlSerializer 类对象将具有相同名称的 2 个子元素组合成单个属性是 C#