c# - 为什么 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 +"@"
没有帮助......”)
解决方案
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
)。
推荐阅读
- c# - 将查询字符串从 VBA 转换为 C# 并使用 HttpClient 发送
- firebase - 在 React Native 中不显示 console.log(action)
- typescript - 忽略 skaffold watch 中的文件夹/文件
- python - 处理不同位置值变化变量的最佳方法是什么?
- angular - 在 mat-table 数据不显示
- sql - 获取特定条件下的 Pivot 值
- sql - 如何在pl sql中编写一个每30个字符换行的函数
- css - 如何设置边距值的scss动态类名
- jquery - Typescript 在添加 jquery 时失败,无法解析命名空间 Sizzle
- javascript - 只防止文本区域中的空格