variable之前的@在c#中意味着什么

本文关键字:意味着 什么 variable | 更新日期: 2023-09-27 17:58:59

首先,它不是变量名前面的@符号在C#中是什么意思?

因为CCD_ 1不是保留的关键字。

我写了一些代码,重拍器建议我在变量group之前添加@

知道为什么吗?

var group = GetDefaultGroup(ClientServiceCommon.Poco.Group);
filteredPairs = @group.Pairs.ToList();

variable之前的@在c#中意味着什么

正如您正确指出的,group不是保留关键字(语言设计者在为语言添加新功能时尽量不引入新的保留关键字,以免破坏现有程序)。然而,它是一个上下文关键字:它成为LINQ查询表达式中的一个关键字。Resharper建议您重命名有问题的变量,以避免在查询表达式中使用该变量时出现歧义。

来自语言规范:

7.16.1查询表达式中的歧义

查询表达式包含许多"上下文关键字",即具有特殊标识符的标识符在给定的上下文中的含义。具体来说,这些是来自哪里,加入,on、equals、into、let、orderby、升序、降序、select、和by。为了避免由混合使用这些标识符作为关键字或简单名称,这些当标识符出现在查询表达式。为此,查询表达式是以"from identifier"开头,后跟任意标记的表达式除了";"、"="或","。

如果你尝试执行以下操作,你会得到一个编译器错误:

var filteredParis = from pair in group.Pairs // group is now treated as a keyword
                    select pair;