C# 为什么Rider在我的公共变量中添加“@”?

C# 为什么Rider在我的公共变量中添加“@”?,c#,rider,C#,Rider,我已经声明了这样一个类: public class Cell : IEquatable<Cell> { public int id { get; } public SetOfCells group; } foreach (Cell cell in c1.@group) { /* blabla */ } 精度:c1。@group和c1.group都有效。为什么呢 如果你能告诉我正确的词,让谷歌找到一个有价值的答案,我很感兴趣,因为我找不到:csharp pr

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

public class Cell : IEquatable<Cell>
{
    public int id { get; }
    public SetOfCells group;
}
foreach (Cell cell in c1.@group) {
    /* blabla */
}
精度:c1。@group和c1.group都有效。为什么呢

如果你能告诉我正确的词,让谷歌找到一个有价值的答案,我很感兴趣,因为我找不到:csharp property+@没有帮助…

group是C中LINQ的关键字,而@是C用来表示例如int@int=3

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

var int = 3;    // won't compile
var group = 3;  // compiles
团体就是所谓的团体

我无法回答为什么骑手在队伍前面加上@。我怀疑Rider是为了安全起见,在每次使用C关键字之前都会添加一个@作为标识符,正如你们所发现的,这并没有什么坏处

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

Group是C中用于LINQ的关键字,@是C使用的,例如int@int=3

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

var int = 3;    // won't compile
var group = 3;  // compiles
团体就是所谓的团体

我无法回答为什么骑手在队伍前面加上@。我怀疑Rider是为了安全起见,在每次使用C关键字之前都会添加一个@作为标识符,正如你们所发现的,这并没有什么坏处


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

我觉得这是Rider特有的一种奇怪行为,因为在Visual Studio中,它没有检测到作为Group关键字的特定用法。它必须在LINQ查询中使用,才能被检测为关键字。@OlivierPons在C中这样使用的@字符被称为“逐字标识符”或“逐字前缀”:我觉得这是Rider特有的一种奇怪行为,因为在Visual Studio中,它没有检测到作为组关键字的特定用法。它必须在LINQ查询中使用,才能被检测为关键字。@OlivierPons在C中这样使用的@字符被称为“逐字标识符”或“逐字前缀”:这可能是一种实现决策,它倾向于实用主义,而不是更准确但成本更高的各种重构实现。在过去的5年里,似乎有一些人报告了这一点:可能是一个实施决策,在Rider中,它倾向于实用主义,而不是更准确但也更昂贵的各种重构的实施。在过去的5年中,似乎有一些人报告了这一点: