c#中声明一个数组并没有创建类型对象?

来源:百度知道 编辑:UC知道 时间:2024/06/04 16:46:53
假设有animal类,声明一个animal类型的数组:animal[] myanimal = new animal [2].那么这样并没有实例化2个animal类型的对象吗?如果要调用animal的方法,还得先animal myanimal=new animal();这样啊?

在C#中数组和其它对像一样是引用类型,但是它却和其的object对象有不同,正是它的这种特殊性才让你有这样的疑问.

一般的引用类型在实例化的时间都会调用其默认的构造函数
就如你所说的Animal am = new Animal();//Animal()构造函数比其它的优先级要高.
而数组Animal[] am = new Animal[2];在这里数组既有值类型的特征(给am对象分配了内存空间),同时和引用一型一样用new关键字创建对象.

所以说数组是一种特殊的引用类型.

没有实例化 只是创建了myanimal数组

就是开辟了内存空间 但是没有赋值

实例化是给它赋值
int[] myint= new int[2]是创建了对象
myint={1,2};
这才是实例化

这样
animal myanimal[0]=new animal();
animal myanimal[1]=new animal();

你没没有实例化 只是创建了大小为2的myanimal数组