Array类

ns:System

Array是一个抽象类 表示数组 提供了创建、查找、删除、排序、修改等应用于数组的操作 此类没有公有的实例构造函数 可以使用静态方法CreateInstance创建Array实例 数组一旦创建 则不能在后来修改其长度 长度就是数组存储的元素个数

Array类的静态方法

CreateInstance静态方法

用于创建数组实例  你可以使用用类似int[] arr = new int[3]{1,2,3}这样的语法格式创建数组 也可以使用Array类的静态方法CreateInstance来创建数组

elementType:数组数据类型

length:数组长度 即元素个数

length1:二维数组中第0维度的元素个数 元素指行

length2:二维数组中第1维度的元素个数 元素指列

如以下创建了一个数组并设置了数组的元素

 Array ary=Array.CreateInstance();
 ary.SetValue();
 ary.SetValue();
 foreach (var item in ary)
 {
     Console.WriteLine(item);//return sam leo
 }

一般很少会创建三维甚至N维度的数组 这里列出使用CreateInstance静态方法来创建一个二维数组的例子 仅供参考

 Array b=Array.CreateInstance(, );//创建一个int类型的 2行3列的二维数组
 b.SetValue(, ,);//设置第0行第0列元素的值
 b.SetValue(, , );
 b.SetValue(, , );
 b.SetValue(, , );//设置第1行第0列元素的值
 b.SetValue(, , );
 b.SetValue(, , );

 int[,] Ary = (int[,])b;

 //按表格的形式循环打印出二维数组的元素
 ; i <= Ary.GetUpperBound(); i++)
 {
     ; z <= Ary.GetUpperBound(); z++)
     {
         Console.Write(Ary[i, z].ToString().PadRight());
     }
     Console.WriteLine("");
 }

结果如图

BinarySearch静态方法

使用二进制搜索算法在参数提供的数组中搜索指定的元素 返回元素下标 可以指定搜索的起始下标和从起始下标开始的搜索的元素个数来搜索指定元素的位置 搜索不到返回-1

array:数组

value:元素对象

startIndex:搜索的起始下标

length:搜索的长度

comparer:比较元素时要使用的 IComparer 实现

Clear静态方法

将参数提供的数组的元素清除 并不真正清除元素而是将元素的值根据元素的类型设为对应的0、null、false

array:数组

index:元素的起始下标

length:要清除的元素个数 将从index指定的下标处开始清除 清除length提供的个数

 string[] strAry={"a","b"};
 Array.Clear(strAry, , );//从下标0开始清除元素 清除个数为两个
 Console.WriteLine(strAry[]==null);//return true

Copy静态方法

将sourceArray数组的一部分元素复制到destinationArray数组中 源数组和接收拷贝元素的数组可以是不同类型的 但必须是可以转换的 如果一个引用类型的数组的元素被拷贝到另一个引用类型的数组中 则会发生浅拷贝 这意味着新数组存储的拷贝元素将是对源数组中对应的元素的引用

sourceArray:源数组

destinationArray:接收复制数据的数组

length:要copy的元素个数

sourceIndex:源数组元素的下标 将从此下标开始复制 可选

destinationIndex:接收复制数据的数组存储复制元素的开始处的索引 可选

 string[] strAry={"a","b"};
 ];
 Array.Copy(strAry, newStrAry, strAry.Length);
 Console.WriteLine(newStrAry[]);//return a

IndexOf静态方法

在参数指定的数组中查找指定的元素 返回元素的下标 找不到返回-1

array:数组

value:查找的元素对象

startIndex:查找的起始下标 将从此处开始查找

length:查找的元素个数

LastIndexOf静态方法

与IndexOf方法类似 区别仅在于IndexOf是从数组最右边开始查找 LastIndexOf则从数组最左边开始查找

Reverse静态方法

倒转参数指定的数组的元素 可以指定startIndex和length 以倒转指定的元素

array:数组

startIndex:要倒转的元素的起始下标

length:要倒转元素的个数

Sort静态方法

对数组的元素执行排序 通过startIndex和length可以指定对数组的某一部分元素执行排序 可以传递一个IComparer对象以实现自定义的比较

array:数组

Keys:包含要排序的关键字的数组

items:包含与keys中每个键对应的项

comparer:比较元素时要使用的IComparer实现

startIndex:排序范围的起始索引

length:排序范围内的元素个数

Array类的实例方法

Clone方法

返回对当前数组的一个浅拷贝 如果数组是引用类型 则新的拷贝出来的数组会保持对原数组的元素的引用

CopyTo方法

拷贝当前数组的元素到参数指定的数组中 可以提供index参数 该参数指定要拷贝的元素到目标数组中的起始下标

 string[] strAry={"a","b","c","d"};
 ];
 strAry.CopyTo(newStrAry, );
 foreach (var item in newStrAry)
 {
     Console.WriteLine(item);
 }

GetEnumerator方法

返回一个IEnumerator对象 该对象可以从数组中读取元素

 string[] strAry={"a","b","c","d"};
 IEnumerator list= strAry.GetEnumerator();
 while (list.MoveNext())
 {
     Console.WriteLine(list.Current);//return a b c d
 }

GetUpperBound

获取指定维度中元素的总个数 元素个数从0开始计算 对于二维数组 参数为0则表示获取维度0的元素总个数 元素指行 参数为1则表示获取维度1的元素总个数 元素指列

GetLowerBound

获取指定维度中元素的最小个数 元素个数从0开始计算 对于二维数组  此方法一般都返回0 除非你自定义了基于非0索引的数组

GetLength方法

获取参数指定的数组的维度中的元素个数 下面的例子获取了二维数组中第0维度和1维度中的元素个数 0维度的元素指的是行 1维度的元素指的是列 此方法类似于GetUpperBound 只不过GetUpperBound是从0开始统计元素 而GetLength从1开始统计元素

 , ,  }, { , ,  } };

 ; i < Ary.GetLength(); i++)//Ary.GetLength(0)获取总行数
 {
     ; z < Ary.GetLength(); z++)//Ary.GetLength(1)获取总列数
     {
         Console.Write(Ary[i, z].ToString().PadRight());
     }
     Console.WriteLine("");
 }

虽然可以使用Length属性得到数组的元素个数 但如果是二维数组调用Length 则会得到每个维度中的元素的个数之和 即行总数+列总数

GetValue方法

根据参数指定的索引获取数组的元素

index:元素的索引

index1:二维数组的行索引

index2:二维数组的列索引

下面例子演示了获取二维数组中第0行第1列的元素

 , ,  }, { , ,  } };
 Console.WriteLine(Ary.GetValue(, ));//return 2

SetValue方法

设置或修改数组的元素

value:元素

index:元素索引

index1:二维数组的行索引

index2:二维数组的列索引

 , ,  };
 Ary.SetValue(, );
 Console.WriteLine(Ary.GetValue());//return 100

 , ,  }, { , ,  } };
 Ary.SetValue(,,);
 Console.WriteLine(Ary.GetValue(,));//return 100

C# - 学习总目录

C# - 系统类 - Array类的更多相关文章

  1. C# - 系统类 - Type类

    Type类 ns:System Type类封装类型 它的实例提供一个特定类型的数据和函数成员的信息 可以使用Type类实例来调用类型的成员 一般将Type类用于反射 Type类的静态字段如下 Empt ...

  2. runtime-给系统已有类添加属性

    在没有接触runtime之前,我们接触到的能给类进行扩展的方法有类目(category)和延展(extension)两种.类目(category)可以给系统已有类添加扩展方法但是不能添加属性,并且被添 ...

  3. Java集合---Array类源码解析

    Java集合---Array类源码解析              ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Prim ...

  4. .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)

    从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...

  5. javascript Array类

    Array类 toString()方法和valueOf()方法,返回特殊的字符串.该字符串是通过对每项调用toString()方法,然后用逗号把它们连接在一起构成的.例如,对具有项"red& ...

  6. [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值

    系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController &l ...

  7. 探索Win32系统之窗口类(转载)

    Window Classes in Win32 摘要 本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化. 在本文中,"类", ...

  8. Java笔记:与系统交互、系统相关的类,Object类

    1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名public static void main(String[] args);pu ...

  9. Array类的Sort()方法

    刚复习了Array类的sort()方法, 这里列举几个常用的,和大家一起分享. Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System. ...

随机推荐

  1. C#操作Access

    C#操作Access数据库的基础知识浅析 C#操作Access数据库的基础知识都有什么呢? C#操作Access数据库的基础知识1. 通过ADO.NET的OleDb相关类来操作Access 主要知识点 ...

  2. C#中如何生成矢量图

    主要的功能就是使用C#画矢量图,然后导出到Word.Excel.Powerpoint中,并且能够再次被编辑.以下是解决过程: 首先应该确定在Office文档中可编辑图形使用的格式:学习了相关资料,了解 ...

  3. How to: Implement a Windows Communication Foundation Service Contract

    This is the second of six tasks required to create a basic Windows Communication Foundation (WCF) se ...

  4. [light oj 1328] A Gift from the Setter

    1328 - A Gift from the Setter   Problem setting is somewhat of a cruel task of throwing something at ...

  5. ☀【移动】UC极速模式

    UC浏览器的部分版本默认是“极速”模式,有何办法能控制UC自动改变其浏览模式? √http://www.zhihu.com/question/20582949 关于UC极速模式下访问网站错乱 √htt ...

  6. udhcpc 参数使用说明

    当没有网络的时候,板子一直发送dhcp请求,导致程序不往下执行,解决的办法是把它切换到后台运行,可是如何切换到后台呢,有办法,它自带参数可以实现该功能.如下: udhcpc -b -i eth0 -p ...

  7. NSUserDefaults存数据相关的问题

    NSUserDefaults存储数据的类型是有限制的!NSUserDefaults里面只能存储property list objects.具体的内容请看下面的链接.特别的,对于NSDictionary ...

  8. Sql->Linq-> Lambda 相互转换

    Linq 转 SQL 或 Linq 转 Lambda : 工具: LinqPad Sql 转 Linq to Entity: 工具: Linqer

  9. 使用 Windows PowerShell 管理Windows Azure映像

    你可以使用 Azure PowerShell 模块中的 cmdlet 管理可供你的 Azure 订阅使用的映像.这包括 Azure 提供的映像以及你上载的映像.对于某些映像任务,你还可以使用 Azur ...

  10. linux中grep和egrep的用法

    1. grep简介 grep (global search regular expression_r(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大 ...