专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
今天看啥  ›  专栏  ›  dotNET跨平台

.NET9引用数组协变怪异Bug

dotNET跨平台  · 公众号  ·  · 2024-11-13 07:10

文章预览

点击上方 蓝字 江湖评谈 设为关注/星标 前言 引用类型的数组是协变的,这是完全没有问题的。协变的实质是允许你将更具体的类型(子类)代替一个较为抽象的类型(父类)。但正因为协变的存在,引用数组某些情况下会存在问题。本篇看下。本文代码是最新的.NET9 RC2作为蓝本参考。 问题 我们看一个正常引用数组的操作: using System; class Animal { public string Name { get ; set ; } } class Giraffe : Animal { public double NeckLength { get ; set ; } } class Program { static void Main ( ) {         Animal[] animals =  new  Giraffe[ 2 ]; animals[ 0 ] = new Giraffe { Name = "Tommy" , NeckLength = 10 };         animals[ 1 ] =  new  Giraffe { Name =  "Tommy" , NeckLength =  10  }; } } 再来看一个不正常的操作: using System; class Animal { public string Name { get; set; } } class ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览