因为group
不是保留的关键字。
我写了一些代码,resharper建议我在变量@
之前添加group
。
知道为什么吗?
var group = GetDefaultGroup(ClientServiceCommon.Poco.Group);
filteredPairs = @group.Pairs.ToList();
答案 0 :(得分:12)
正如您正确指出的那样,group
不是保留关键字(语言设计者在为语言添加新功能以便不破坏现有程序时,尽量不引入新的保留关键字)。
但是,它是上下文关键字:它成为LINQ查询表达式中的关键字。 Resharper建议您重命名相关变量,以避免在查询表达式中使用此变量时产生的歧义。
7.16.1查询表达式中的歧义
查询表达式包含许多“上下文关键字”,即具有特殊标识符的标识符 意义在给定的背景下。具体来说,这些是来自哪里,加入, on,equals,into,let,orderby,ascending,descending,select, group 并通过。为了避免由查询表达式引起的歧义 混合使用这些标识符作为关键字或简单名称,这些 标识符在a中的任何位置发生时被视为关键字 查询表达式。为此,查询表达式是any 表达式以“from identifier”开头,后跟任何标记 除了“;”,“=”或“,”。
如果您尝试执行以下操作,则会出现编译器错误:
var filteredParis = from pair in group.Pairs // group is now treated as a keyword
select pair;