从我一直在读的一本书中,它说
int[] splats;
int[] dats = new int[4];
char[] letters = new char[5];
splats = dats; //ok
splats = letters; //not ok
它不允许这种分配的机制是什么?
编辑:
与此任务相反,
int[] weightList = new int[5];
byte b = 4;
char c = 'c';
short s = 7;
weightList[0] = b; //ok
weightList[1] = c; //ok
weightList[2] = s; //ok
这是允许的。
编辑:
我想我明白扩大和缩小是如何工作的,但在我的脑海中
new int[4];
and
new char[4];
是堆中的两个数组对象,类型为“数组”。不是吗?
也许喜欢
new List<int>
and
new List<char>
当然,它们各自的元素类型不同,但 List 对象本身属于相同的 List 类型。
我读到只要分配方具有更窄的类型(子类),就允许对象数组执行该操作。
所以也许我可以这样想
因为原始类型 char 不继承原始类型 int,所以不能将 chars 数组重新分配给 ints 数组?
当然,一种原始类型“扩展”另一种听起来不正确,只是为了让它更容易理解。