为什么 Rider 向我的 public 变量添加“@”?
Why does Rider add an "@" to my public variable?
我已经这样声明了 class:
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
都有效。这是为什么?
(如果你能告诉我 google 的正确词语以找到我感兴趣的有价值的答案,因为我找不到:“csharp property +"@"
没有帮助.. .")
group
是 C# 中的关键字(对于 LINQ group clause), and @
is the "verbatim prefix" used by C# to use keywords as identifiers(例如 int @int = 3;
)。
在这种情况下,@
不是必需的:group
已作为关键字添加到更高版本的 C# 中,因此 C# 编译器必须保持与现有代码的向后兼容,并且在不允许 int
等其他关键字的情况下接受 group
:
var int = 3; // won't compile
var group = 3; // compiles
group
就是所谓的"contextual keyword".
我无法回答为什么 骑手在group
前面添加@
。我 怀疑 Rider 试图“谨慎行事”并在每次使用 C# 关键字作为标识符之前添加一个 @
(如您所见,它不会受伤了)。
一个务实的解决方案是将您的成员重命名为 Group
(大写 G
)。
我已经这样声明了 class:
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
都有效。这是为什么?
(如果你能告诉我 google 的正确词语以找到我感兴趣的有价值的答案,因为我找不到:“csharp property +"@"
没有帮助.. .")
group
是 C# 中的关键字(对于 LINQ group clause), and @
is the "verbatim prefix" used by C# to use keywords as identifiers(例如 int @int = 3;
)。
在这种情况下,@
不是必需的:group
已作为关键字添加到更高版本的 C# 中,因此 C# 编译器必须保持与现有代码的向后兼容,并且在不允许 int
等其他关键字的情况下接受 group
:
var int = 3; // won't compile
var group = 3; // compiles
group
就是所谓的"contextual keyword".
我无法回答为什么 骑手在group
前面添加@
。我 怀疑 Rider 试图“谨慎行事”并在每次使用 C# 关键字作为标识符之前添加一个 @
(如您所见,它不会受伤了)。
一个务实的解决方案是将您的成员重命名为 Group
(大写 G
)。