为什么Rider会在我的公共变量中添加一个“@”?
c#
我已经声明了一个这样的类:
public class Cell : IEquatable<Cell>
{
public int id { get; }
public SetOfCells group;
}
每次我想使用时group,Rider 都会添加 和@之前,如下所示:
foreach (Cell cell in c1.@group) {
/* blabla */
}
精度:c1.@group和c1.group 这两个作品。这是为什么?
(如果你能告诉我正确的词来谷歌找到我感兴趣的有价值的答案,因为我找不到一个:“csharp property +"@"没有帮助......”)
回答
group是 C# 中的关键字(用于 LINQ组子句),并且@是C# 用于将关键字用作标识符(例如)的“逐字前缀”。int @int = 3;
在这种情况下,the @is not必需:group在更高版本的 C# 中作为关键字添加,因此 C# 编译器必须保持与现有代码的向后兼容,并group在int不允许使用其他关键字的情况下接受,例如:
var int = 3; // won't compile
var group = 3; // compiles
group是一个所谓的“上下文关键字”。
我无法回答为什么Rider@在group. 我怀疑Rider 试图“谨慎行事”,并@在每次使用 C# 关键字之前添加一个作为标识符(如您所见,这并没有什么坏处)。
一个实用的解决方案是将您的成员重命名为Group(大写的G)。