关于c#类型转换的问题

问题描述:

两个数组之间进行显式转换,为啥要求元素是引用类型?另外,对彼此的元素个数没有要求?

因为不同值类型的存储空间是不同的。比如一个int 4个字节,一个double 8个字节,一个结构体比如说100个字节。
没办法在不重新分配空间的情况下完成转换。
而引用,其实相当于一个指针,它的大小是固定的。

但是其实你不一定要强制转换啦,比如你看下面的代码:
int[] a = { 1, 2, 3, 4};
float[] b = a.Select(x => (float)x).ToArray();
管它什么类型都可以的