26
2018
02

上网管理软件协变体

以这种方式在泛型类型之间转换的功能称为泛型变体。在一些情况下,希望能缩窄类型变量,如前面的例子所示,有时则希望加宽类型变量,这些称为协变和逆变。

协变:在前面的例子中,Tortoise的IEnumerable可以转换为Animal的IEnumerable。这称为协变,是允许的,因为T接口的IEnumerable已更新为包含out关键字:

05
2018
02

电脑行为管理软件泛型类型列表转换

这段代码尝试把Tortoise列表转换为Animal列表。如果允许这么做,就可以把Lion添加到列表中,因为它也继承了Animal。这会使最后一个语句不一致,因为Tortoise列表不再只包含Tortoise。

这演示了不能在泛型类型之间进行转换,但在一些情况下允许转换类型。例如,下面的代码段把Tortoise列表转换为Animal的IEnumerable。因为IEnumerable接口不允许修改集合,所以这是一个安全、允许进行的转换。

«1»