我最近经常看到这个 - 这是什么意思?
public void IPersistenceRepository<TEntity> : IDisposable {
|
v
public IEnumerable<TEntity> Where(Expression<Func<TEntity, bool>> @predicate);
}
或
public IDomainEventHandler<TEvent> : IEventHandler {
|
v
public void Handle(TEvent @event);
}
答案 0 :(得分:5)
来自C# Language Specification,§ 2.4.2 Identifiers (C#) :
前缀“@”允许使用 关键字作为标识符,即 在与其他人接口时很有用 编程语言。人物 @ 实际上并不是其中的一部分 标识符,所以标识符可能是 在其他语言中看作是正常的 标识符,没有前缀。一个 调用带有@前缀的标识符 逐字标识符。
它是一种转义标识符的方法,也是关键字。
答案 1 :(得分:0)
它只是变量名称的一部分,但允许您使用C#语言的保留关键字作为名称和标识符。
这与.Net框架不适用于特定语言的情况有关。如果使用其他.Net语言编写的代码将使用C#的保留关键字作为标识符名称,会发生什么?如何使用从C#访问该标识符?答案是您要在参数名称之前添加@
。
您可以使用此功能,无论使用其他语言的代码(如代码中所示,您定义了一个名为event
的变量,尽管event
是保留关键字),甚至不管使用关键字(谓词不是一个关键词,但你仍然可以用@
)作为前缀。