代表的@前缀是否有任何特殊含义?

有几次我见过ReSharper生成的代码如下所示:

delegate void myHandler(int i); myHandler myHandlerContainer; ... foreach (Delegate @delegate in myHandlerContainer.GetInvocationList()) {...} 

@delegate中的’ @ ‘是否赋予该变量任何特殊的语义含义?
或者这只是我之前没遇到过的惯例?

来自MSDN的更多细节:

前缀“@”允许使用关键字作为标识符,这在与其他编程语言交互时很有用。 字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀。 带有@前缀的标识符称为逐字标识符。 允许使用@前缀作为非关键字的标识符,但强烈建议不要使用样式。

来自C#语言规范:2.4.2标识符 。

因此,使用’@’进行前缀允许例如从名为“委托”的类派生,该类可能在用C#以外的其他语言编写的库中定义。

在任何其他情况下,我不建议使用此语法,而是构建与C#关键字不同的标识符(例如,值而不是值),以提高代码可读性,并避免混淆是否附加任何特殊含义。

关于变量命名还有另一个有趣的事实:

包含两个连续下划线字符(U + 005F)的标识符保留供实现使用。 例如,实现可能会提供以两个下划线开头的扩展关键字。

“@delegate”用于区分变量名称和“delegate”关键字。