C# - 系统类 - Array类
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# - 系统类 - Array类的更多相关文章
- C# - 系统类 - Type类
Type类 ns:System Type类封装类型 它的实例提供一个特定类型的数据和函数成员的信息 可以使用Type类实例来调用类型的成员 一般将Type类用于反射 Type类的静态字段如下 Empt ...
- runtime-给系统已有类添加属性
在没有接触runtime之前,我们接触到的能给类进行扩展的方法有类目(category)和延展(extension)两种.类目(category)可以给系统已有类添加扩展方法但是不能添加属性,并且被添 ...
- Java集合---Array类源码解析
Java集合---Array类源码解析 ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Prim ...
- .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)
从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...
- javascript Array类
Array类 toString()方法和valueOf()方法,返回特殊的字符串.该字符串是通过对每项调用toString()方法,然后用逗号把它们连接在一起构成的.例如,对具有项"red& ...
- [BS-04] 在iOS中对系统定义的类的readonly属性可通过KVC进行赋值
系统提供的类的readonly属性可通过KVC进行赋值 UITabBarController.h @interface UITabBarController : UIViewController &l ...
- 探索Win32系统之窗口类(转载)
Window Classes in Win32 摘要 本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化. 在本文中,"类", ...
- Java笔记:与系统交互、系统相关的类,Object类
1.程序与用户交互 (1)运行一个Java程序的时候要给它提供一个main方法入口,这边分析一下这个main方法的签名public static void main(String[] args);pu ...
- Array类的Sort()方法
刚复习了Array类的sort()方法, 这里列举几个常用的,和大家一起分享. Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System. ...
随机推荐
- MySQL 5.6数据库配置主从同步
win7环境下mysql主从搭建 我下载的是压缩包,免安装的那种 1.简单安装 解压后把my-default.ini复制一份改为my.ini默认mysql会找这个文件,首先从system32下找,然后 ...
- Linux网络地址转换分析
Linux网络地址转换分析 地址转换用来改变源/目的端口,是netfilter的一部分,也是通过hook点上注册相应的结构来工作. Nat注册的hook点和conntrack相同,只是优先级不同,数据 ...
- Android fragment 回调函数改进
由于fragment的onResume()等回调的调用时机与Activity不一样,导致用起来比较麻烦,所以我重新封装了一下回调函数,十分简单. 使用时只需要继承此基类,使用onFragmentXXX ...
- .NET之特性和属性
1. 引言 attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口.因为.NET Framework中使用了大量的定制特性来完成代码约定 ...
- 【HDOJ】2065 "红色病毒"问题
刚开始看这道题目的时候,完全没看出来是递推.看了网上大牛的分析.立刻就明白了.其实无论字符串长度为多少,都可以将该长度下的组合分成四种情况S1(A偶数C偶数).S2(A偶数C奇数).S3(A奇数C偶数 ...
- XBMC 最新版本错误
1. Syntax error: "(" unexpected 修改 tools/depends下的makefile.include 将NDK_VER=0x9d
- Android开发之ADT中无Annotation Processin的解决办法
使用ButterKnife的时候,进入ADT中设置的时候发现在Java Compiler展开后无Annotation Processin 解决办法: 安装插件:Juno - http://downlo ...
- hadoop异常: 到目前为止解决的最牛逼的一个异常(java.io.IOException: Incompatible clusterIDs)
(注意: 本人用的版本为hadoop2.2.0, 旧的版本和此版本的解决方法不同) 异常为: 9 (storage id DS-2102177634-172.16.102.203-50010-1384 ...
- MVC——数据库增删改查(Razor)
一.显示信息 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); //定义一个变量取出所有数据 public L ...
- apache开源项目--Cassandra
Apache Cassandra是一套开源分布式Key-Value存储系统.它最初由Facebook开发,用于储存特别大的数据.Facebook目前在使用此系统. 主要特性: 分布式 基于column ...