// 1。数组协变的概念:引用类型的数组,子类的数组类型可以赋值给父类的类型。
// 两个条件:
// 1。必须是引用类型的数组
// 2。数组元素的类型之间存在父子关系(存在隐式转换)
// 3。值类型的数组没有协变
double[] doubles = new double[3];
doubles[0] = 10;
doubles[1] = 20;
doubles[2] = 30;
// 虽然10是int类型,但值类型的数组没有协变。是隐式转换。
Animal[] animals = new Animal[2];
animals[0] = new Dog() { Id = 1, Name = "京巴" };
animals[1] = new Dog() { Id = 2, Name = "土狗" };
Animal[] animals1 = new Dog[2] {
new Dog() { Id = 1, Name = "京巴1",Age=10 },
new Dog() { Id = 2, Name = "土狗2",Age=20 }
};
foreach (var item in animals1)
{
// item是哪一种类型?Animal还是Dog?Animal
Dog dog = (Dog)item;
Console.WriteLine($"Id:{dog.Id},Name:{dog.Name},Age:{dog.Age}");
}
API
Random rnd = new Random();
rnd.Next();
rnd.NextDouble();
rnd.NextBytes();
int[,,] nums = new int[2,3,4];
Console.WriteLine(nums.Length); //24
Console.WriteLine(nums.GetLength(2)); //4
Console.WriteLine(nums.LongLength);//24
Console.WriteLine(nums.GetLongLength(0));//2
Console.WriteLine(nums.GetLongLength(1));//3
Console.WriteLine(nums.Rank); //3 返回维数
int[] nums2 = new int[3];
nums2.Initialize();