观《深入理解C#》有感---泛型可变性的缺乏
泛型不支持协变性,数组支持,举个例子:
要注意如下代码:
animals2[0] = new Dog();
虽然编译能够通过,但运行后就会报错。本书中,作者给了它俩支持协变性的不同原因,以下是原话叙述。
泛型:泛型的设计者认为,这比编译时就失败还要糟糕——静态类型的全部意义就在于在代码运行之前找出错误。
数组:设计者希望能面向尽可能多的用户,为此采取的策略之一就是允许支持从Java中编译来的代码,换句话说,.NET之所以有协变数组,是因为Java有协变数组——虽然这个功能在Java中是一个公认的“瑕疵”
本文作者:陈侠云
本文链接:https://www.cnblogs.com/chenxiayun/p/18298944
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
合集:
《深入理解C#》读书笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步