'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
指定一个泛型类型参数作为逆变变量:in
(generic Modifier) (c#参考)。协变也有out
@
允许使用注册关键字作为标识符:
c#关键字关键字是预定义的保留标识符,具有特殊的对编译器的意义。它们不能在程序,除非它们包含
@
作为前缀。例如,@if
是有效的但if
不是,因为它是关键字。