首页 > 解决方案 > 为什么 Rider 会在我的公共变量中添加“@”?

问题描述

我已经声明了一个这样的类:

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 +"@"没有帮助......”)

标签: c#rider

解决方案


group是 C# 中的关键字(用于 LINQ组子句),并且@是C# 用于将关键字用作标识符(例如)的“逐字前缀”int @int = 3;

在这种情况下,@没有必要:group在更高版本的 C# 中作为关键字添加,因此 C# 编译器必须保持与现有代码的向后兼容,并在不允许使用group其他关键字的情况下接受:int

var int = 3;    // won't compile
var group = 3;  // compiles

group是所谓的“上下文关键词”

我无法回答为什么Rider 会@group. 我怀疑Rider 试图“安全行事”,并@在每次使用 C# 关键字之前添加一个作为标识符(正如您所发现的,它没有伤害)。

一个务实的解决方案是将您的成员重命名为Group(使用大写的G)。


推荐阅读