'in'和& # 39;@ # 39;关键字在c#中定义接口时所做的

本文关键字:接口 定义 关键字 in | 更新日期: 2023-09-27 18:10:14

给定下面的接口声明:

声明

public interface EventHandler<T>
{
    void Handle(T command);
}

声明B

public interface EventHandler<in T>
{
    void Handle(T @event);
}

在常规测试中,它们都做同样的事情。Handle方法按预期调用。

以上内容在哪些方面有所不同,它们在其他场景中的表现又有何不同?

'in'和& # 39;@ # 39;关键字在c#中定义接口时所做的

in指定一个泛型类型参数作为逆变变量:in (generic Modifier) (c#参考)。协变也有out

@允许使用注册关键字作为标识符:

关键字是预定义的保留标识符,具有特殊的对编译器的意义。它们不能在程序,除非它们包含@作为前缀。例如,@if是有效的但if不是,因为它是关键字。

c#关键字