文章预览
点击上方 蓝字 江湖评谈 设为关注/星标 前言 引用类型的数组是协变的,这是完全没有问题的。协变的实质是允许你将更具体的类型(子类)代替一个较为抽象的类型(父类)。但正因为协变的存在,引用数组某些情况下会存在问题。本篇看下。本文代码是最新的.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
………………………………