方法/构造函数参数中的@ -sign是什么?

时间:2014-03-05 11:48:09

标签: c#

我最近经常看到这个 - 这是什么意思?

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);

}

2 个答案:

答案 0 :(得分:5)

来自C# Language Specification§ 2.4.2 Identifiers (C#)

  

前缀“@”允许使用   关键字作为标识符,即   在与其他人接口时很有用   编程语言。人物 @   实际上并不是其中的一部分   标识符,所以标识符可能是   在其他语言中看作是正常的   标识符,没有前缀。一个   调用带有@前缀的标识符   逐字标识符。

它是一种转义标识符的方法,也是关键字。

答案 1 :(得分:0)

它只是变量名称的一部分,但允许您使用C#语言的保留关键字作为名称和标识符。

这与.Net框架不适用于特定语言的情况有关。如果使用其他.Net语言编写的代码将使用C#的保留关键字作为标识符名称,会发生什么?如何使用从C#访问该标识符?答案是您要在参数名称之前添加@

您可以使用此功能,无论使用其他语言的代码(如代码中所示,您定义了一个名为event的变量,尽管event是保留关键字),甚至不管使用关键字(谓词不是一个关键词,但你仍然可以用@)作为前缀。