微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Rider 会在我的公共变量中添加一个“@”?

如何解决为什么 Rider 会在我的公共变量中添加一个“@”?

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

public class Cell : IEquatable<Cell>
{
    public int id { get; }
    public SetofCells group;
}

每次我想使用 group 时,Rider 都会在之前添加@,如下所示:

foreach (Cell cell in c1.@group) {
    /* blabla */
}

精度:c1.@groupc1.group 有效。这是为什么?

(如果你能告诉我正确的词来谷歌找到我感兴趣的有价值的答案,因为我找不到一个:“csharp property +"@" 没有帮助...”)

解决方法

group 是 C# 中的关键字(对于 LINQ group clause),而 @ 是 C# 用于 "verbatim prefix"use keywords as identifiers(例如 {{ 1}}).

在这种情况下,int @int = 3; 不是必需的:@ 在更高版本的 C# 中作为关键字添加,因此 C# 编译器必须保持与现有代码的向后兼容并接受 { {1}} 在不允许使用其他关键字(例如 group)的情况下:

group

int 是所谓的 "contextual keyword"

我无法回答为什么 Rider 在 var int = 3; // won't compile var group = 3; // compiles 前面添加了 group。我怀疑 Rider 试图“安全操作”并在每次使用 C# 关键字之前添加一个 @ 作为标识符(正如您所发现的,这并没有伤害).

实用的解决方案是将您的成员重命名为 group(大写的 @)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。