观《深入理解C#》有感---泛型可变性的缺乏

泛型不支持协变性,数组支持,举个例子:

image

要注意如下代码:

animals2[0] = new Dog();

虽然编译能够通过,但运行后就会报错。本书中,作者给了它俩支持协变性的不同原因,以下是原话叙述。
泛型:泛型的设计者认为,这比编译时就失败还要糟糕——静态类型的全部意义就在于在代码运行之前找出错误。
数组:设计者希望能面向尽可能多的用户,为此采取的策略之一就是允许支持从Java中编译来的代码,换句话说,.NET之所以有协变数组,是因为Java有协变数组——虽然这个功能在Java中是一个公认的“瑕疵”

posted @ 2024-07-12 17:01  陈侠云  阅读(15)  评论(0)    收藏  举报
//雪花飘落效果