我发现自己心不在焉地使用from
作为标识符。
我意识到可以使用@
来转义标识符名称,因此使用保留字,但我不明白为什么在这种情况下我没有警告或错误。
除了预期目的之外,我不想使用保留字,但我不想再犯一个类似的错误,并且想知道在某些情况下不保留语言关键字背后的理由。 / p>
答案 0 :(得分:13)
某些关键字仅在某些情境中保留,例如partial
中的partial class
。
请参阅this topic on MSDN下的“内容相关关键字”。
答案 1 :(得分:4)
C#团队专门尝试避免在该语言中创建新的保留关键字。添加的任何新关键字都意味着它会自动破坏使用该关键字作为标识符的现有代码。因此,只要有可能,C#将使用上下文关键字来最小化或消除破坏现有代码的可能性。
上下文关键字是在from
,partial
,var
等特定上下文中使用时仅作为关键字的关键字...该上下文不包含标识符:)
我不相信自C#2.0以来已添加新关键字(甚至不确定2.0添加了一个)
答案 2 :(得分:3)
是'上下文关键字'。很多C#中的人,在某个特定环境中使用它们时,它们的行为就像一个关键字。最大的好处是在语言中添加这样的上下文关键字不会破坏现有代码。
您会在此MSDN page的第二个表格中找到它们。是的,来自的就在那里。
答案 3 :(得分:2)
当上下文(MSDN link)时,它们不是保留:
上下文关键字用于 提供具体的意义 代码,但它不是保留字 C#。一些上下文关键字,例如 局部和哪里,有特殊的 两种或两种以上情境中的含义。
答案 4 :(得分:1)
回答基本问题:
在C#1之后添加的所有关键字都是上下文关键字。这可以避免破坏变化。
除了访问者关键字(add
,remove
,get
和set
)之外,几乎所有C#1关键字都是保留的。
答案 5 :(得分:0)
大多数C#关键字始终保留。正如您所发现的,有些仅在某些情况下保留。它们被称为上下文关键字。我相信这是一种更好地确保向后兼容性的方法。
原因是from
在C#2中是一个完全可以接受的变量名.C#3添加了LINQ,它们需要关键字。为了保持最大兼容性,我们添加了from
作为上下文关键字。