C#中的数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的数组相关的知识,希望对你有一定的参考价值。
多维数组
- int[,,] s3 = new int[3, 4, 2] {
- { {1,2 }, {2,3 }, {3,4 }, {4,5 }},
- { {1,2 }, {2,3 }, {3,4 }, {4,5 }},
- { {1,2 }, {2,3 }, {3,4 }, {4,5 }}
- };
这种多维数组用一个迭代的概念来理解比较好理解,最小的单元是一个int[2]数组(两个元素),然后是4个int[2],然后是3个(4个int[2])。
创建array数组
用[]声明数组是C#中使用Array类的记号,在后台会创建一个派生于抽象基类Array的新类。这样就可以使用Array类为每个C#数组定义的方法和属性了。int和string类都继承了array类,所以可以直接用int[] i=new int[4]这种方式来声明数组。array只有2种创建数组的方法,一种是下面代码中Array.CreateInstance(这种方法),另一种是直接在类的后面加括号。
由于Array类是一个抽象类,所以不能用构造函数来创建数组。但除了可以使用C#语法创建数组实例之外,还可以使用静态方法CreateInstance()创建数组(如果事先不知道元素的类型,就可以使用该静态方法)。
- var a = Array.CreateInstance(typeof(char), 10); // 创造一个char类型,长度为10的数组
- string b = "spike";
- a = b.ToArray();
- foreach (var item in a)
- {
- Console.WriteLine(item);
- }
- Console.ReadKey();
把一个Array添加到Arraylist对象上
Foreach (object a in Array) // 当然array是一个抽象类,这样写就是演示一下,可以使用array的继承类来这样做,比如int string
{
ArrayList.Add (a);
}
那么CopyTo()和Clone()方法的区别是什么呢?
区别是用法上的不同
Array1.CopyTo(Array2,0);
Array3 = Array2.Clone();
其中Array2必须是一个已经实例化的数组.而Clone()的返回值是object,不必提前实例化.
这样,我相信理解这两个方法的区别就很容易了.本质上并没有什么区别.都属于浅拷贝.如果拷贝所有的数组,就是用Clone().但是如果只是拷贝一部分,就可以选择CopyTo()了,CopyTo()的参数提示是这样的CopyTo(Array array,int Index).第二个参数index(索引)是指明从数组中的第几个对象开始复制。对于浅拷贝:如果数组中的成员为值类型(如:int,float,double,byte等),则完全复制数值到目标数组中,如果是引用类型(如用户自定义类型:class Student,class People,或者是类库中的类类型:ArrayList等),则指复制引用给目标数组.
测试代码如下
int[] a = { 1, 2, 3, 4, 6, 7, 8 };
var b = (int[])a.Clone();
int[] c = new int[9];
a.CopyTo( c,0);
foreach (var item in c)
{
Console.WriteLine(item);
}
Console.WriteLine();
foreach (var item in b)
{
Console.WriteLine(item);
}
Console.ReadKey();
C# 中的ToArray()和ToList()对比
ToList<TSource> 具有类似的行为,但它返回一个 List<T>,而非一个数组。
string[] ii = { "1", "2", "3", "1", "0", "2" };
var de = ii.ToArray();
Console.WriteLine(de[0]); // 这里de还是一个string[]类型的数组( 输出验证为system.string[] ),继承了array抽象类的数组
// 主要看toArray前面的元素可以最低分解成什么类型的元素,就以这个元素的数组类型作为新对象的数组类型
// 比如如果 string name = "jingya" ; 那么toArray()后就为char[]数组
// int[] ii = {1,2,3} ; 那么toArray()后就为int[]数组
var di = ii.ToList(); // 创建一个集合,集合才有Sort方法,才能使用foreach
di.Sort();
foreach (var item in di)
{
Console.WriteLine(item);
}
Console.WriteLine();
int[] jj = { 1, 2, 3, 4, 12, 3, 4, 5, 2, 2, 1, 3, 4 };
Console.ReadKey();
以上是关于C#中的数组的主要内容,如果未能解决你的问题,请参考以下文章