1

鉴于以下接口声明:

声明 A

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

声明 B

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

在正常测试中,这些都做同样的事情。该Handle方法按预期调用。

上述情况有何不同,在其他情况下它们的行为有何不同?

4

1 回答 1

11

in将泛型类型参数指定为逆变:in(Generic Modifier) (C# Reference)。还有outfor covariant

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

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

来源:C#关键词

于 2013-04-20T21:40:06.880 回答