欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 »  .NET本质论第一卷:公共语言运行库教程 » 正文

本教程章节列表

数组的详细使用示例

创建时间:2012年11月28日 22:08  阅读次数:(3119)
分享到:
示例5.13 创建和使用交错形的数组
//声明对Int32的交错数组的引用
Int[][] matrix;
//分配3个元素的数组
Matrix=new int[3][];
//分配3个包含4个元素的子数组
Matrix[0]=new int[4];
Matrix[1]=new int[4];
Matrix[2]=new int[4];
//依次遍历所有的元素
For(int i=0;i<matrix.Length;++i)
 For(int j=0;j<matrix[i].Length;++j)
  Matrix[i][j]=(i+1)*(j+1)

数组支持一套运算的通用集合。在基本访问器方法(如示倒5.11所示)之外,数组还支持块拷贝操作(如示例5.14所示)。尤其是Copy方法支持将一个数组中的某个范围的元素拷贝到另一个数组中。示例5.15展示了这些方法的用法。

示例5.14 System.Array(节选2)
Namespace System{
Public class Array{
//拷贝描述符+元素
Object Clone();
//质元素
Static void Copy(Array source,Array dest,int nElems);
Static void Copy(Array source,int sourceOffset,Array dest,int sourceOffset,int nElems);
//清除(零或者null)元素
Static void Clear(Array source,int initialIndex,int nElems);
}
}

示例5.15 使用System.Array
Void Main()
{
Int[] left={1,2,3,4,5,6};
Array.Clear={left,3,2};

//left=={1,2,3,0,0,6}
Array.Copy(left,0,left,3,2)
//left=={1,2,3,1,2,6}
}

只有当数组的元素支持Icomparable接口时,System.Array类型的几种方法才可以应用。示例5.16列出了这些方法。从技术上讲,Array.IndexOf和Array.LastindexOf需要元素以一种有意义的方式实现Equals力法。示例5.17列举了IndexOf和BinarySearch。尽管BinarySearch力法要求数组已经被排好序,但它执行的时间只是O(log(n)),明显优于IndexOf所需的时间O(n)。

示例5.16 System.Array(节选3)
Namespace System{
Public class Array{
//使用Object.Equals进行线性查找(如果没有找到,返回-1)
Static int IndexOf(Array array,Object value);
Static int LastIndexOf(Array arry,Object Value);
//通过IComparable对元素进行排序
Static void Sort(Array array);
//将元素进行反序排列
Static void Reverse(Array array);
//对一个排好序的数组进行折半查找
//如果没有找到,返回下一个最大值的索引的负值
Static int BinarySearch(Array array,Object value);
}
}

示例5.17 使用System.Array(回顾)
Void Main()
{
Int[] values{0,2,4,6,8,10,12};
Int index=Array.IndexOf(values,6); //返回3
Index=Array.BinarySearch(values,6); //返回3
Index=Array.IndexOf(values 7); //返回-1
Index=Array.BinarySearch(values,7); //返回-4
}
{
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 18+66=? 的结果(结果是:84)
结  果: