C#创建数组解决方法
C#创建数组
[size=24px][/size]
我想问一下 int [] a = new int[5];
Array a = Array.CreateInstance(typeof(string),5);
这两句本质的区别是什么啊,我现在学乱了。
------解决思路----------------------
Array.CreateInstance(typeof(string),5)这是一个静态方法,返回一个Array对象。你转到定义看看就知道了。
------解决思路----------------------

为什么不可以你,有什么不好理解
int[] x = { };
Array.CreateInstance(typeof(int),0);
这两句有什么不一样?没有
int[] 就是个语法糖,下面还是Array
------解决思路----------------------
Array.CreateInstance(typeof(string),5);这句话创建的只是继承自Array的一个具体的类,有可能就是ArrayList
这就跟IList<string> list = new List<string>()一样,难道你也问IList分明是个接口,为什么它就能创建呢?
------解决思路----------------------
Array a1 = Array.CreateInstance(typeof(int),5);
int [] a = new int[5];
a = (int [])a1 ;
我觉得本质上是一样的,Array 是基础,int数组只是其中一个实现而已。用Array.CreateInstance需要拆箱不划算,一般直接用数组实例就好。
Array.CreateInstance 用在你不知道创建的数组类型时比较好,还有数组下标为自定义的时候比较好用,比如 a[-1] a[0]的需要时候
无需纠结,测试下会发现耗时区别不大。
------解决思路----------------------
一个是引用类型一个是值类型;抽象类也可以用于声明,具体用子类给她赋值就行。
[size=24px][/size]
我想问一下 int [] a = new int[5];
Array a = Array.CreateInstance(typeof(string),5);
这两句本质的区别是什么啊,我现在学乱了。
------解决思路----------------------
Array.CreateInstance(typeof(string),5)这是一个静态方法,返回一个Array对象。你转到定义看看就知道了。
------解决思路----------------------
为什么不可以你,有什么不好理解
int[] x = { };
Array.CreateInstance(typeof(int),0);
这两句有什么不一样?没有
int[] 就是个语法糖,下面还是Array
------解决思路----------------------
Array.CreateInstance(typeof(string),5);这句话创建的只是继承自Array的一个具体的类,有可能就是ArrayList
这就跟IList<string> list = new List<string>()一样,难道你也问IList分明是个接口,为什么它就能创建呢?
------解决思路----------------------
Array a1 = Array.CreateInstance(typeof(int),5);
int [] a = new int[5];
a = (int [])a1 ;
我觉得本质上是一样的,Array 是基础,int数组只是其中一个实现而已。用Array.CreateInstance需要拆箱不划算,一般直接用数组实例就好。
Array.CreateInstance 用在你不知道创建的数组类型时比较好,还有数组下标为自定义的时候比较好用,比如 a[-1] a[0]的需要时候
无需纠结,测试下会发现耗时区别不大。
------解决思路----------------------
一个是引用类型一个是值类型;抽象类也可以用于声明,具体用子类给她赋值就行。