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. [OJ] Data Stream Median (Hard)

    LintCode 81. Data Stream Median (Hard) 思路: 用一个大根堆保存较小的一半数, 一个小根堆保存较大的一半数. 每次根据num和两个堆顶的数据决定往哪个堆里面放. ...

  2. 绕过kernel模块版本校验检测

    kernel module version check bypass . 举例说明 . 内核是怎么实现的 . 怎样去突破 . 总结 . 举例说明 Linux内核版本很多,升级很快,2个小内核版本中内核 ...

  3. Android fragment 回调函数改进

    由于fragment的onResume()等回调的调用时机与Activity不一样,导致用起来比较麻烦,所以我重新封装了一下回调函数,十分简单. 使用时只需要继承此基类,使用onFragmentXXX ...

  4. Cannot Create Supplier Site (Address) (文档 ID 1069032.1)

    Error Address and Site Creation - Unable to create address and sites because of the following error ...

  5. CSS选择器一览

    CSS选择器一览 CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还 ...

  6. Heartbeat+DRBD+NFS 构建高可用的文件系统

    1.实验拓扑图 2.修改主机名 1 2 3 vim /etc/sysconfig/network vim /etc/hosts drbd1.free.com     drbd2.free.com 3. ...

  7. 为什么你的 phpinfo() 无法显示

    一.问题描述 编写了一个php文件test.php,代码如下: <?php echo phpinfo(); ?> 浏览器访问了一下,却返回了 NULL. 二.问题定位及解决 网上查了下,大 ...

  8. 深入.net平台和c#编程 学习笔记

    深入.net平台和c#编程 一:理解.nteFramwork与c# 1.1,:Microsoft.net框架概述 1.2:.net框架结构 1.3.:c#语言概述 1.4:体验框架类库的强大功能 二: ...

  9. ☀【Zepto】

    http://zeptojs.com/ https://github.com/madrobby/zepto Zepto 中文手册 http://www.360weboy.com/handbook/ze ...

  10. jquery easyui datebox 的使用

    看了jquery easyui databox的官方api,还可以加入倒是很简单,但是想要获得他的值和修改值就很费劲,不知道怎么弄,试了n次终于搞定.这里总结一下,供有相同问题的人查询. 1. 官方a ...