一.数组

  1. 变量是程序运行时在内存中存储发生变化的容器。
  2. 变量可以存储单个数据,而数组可以存储多个变量,并且互不干扰,互不影响,和谐共处。
  3. 数组的特点:长度固定,类型相同。

二.数组的分类
一维数组,二维数组,多维数组,不规则数组
三.数组的应用

  1. 创建:int[] vs = new int[5];
  2. 赋值:vs[0] = 5;
  3. 应用

四.声明数组

//定义一个已知长度的一维数组
int[] arr=new int[100];
//定义一个未知长度并使用对象初始化器直接赋值int
string person_Names =new string[]{"张三","李四","王五","刘涛"};

五.C#多维数组

  1. C#支持多维数组,多维数组又称为矩阵数组。
  2. 声明一个string变量的多维数组string [ , ] names
  3. 声明一个int类型的多维数组:int[,,] m
  4. 二维数组 :多维数组最简单的形式就是二维数组。一个二维数组在本质上可以被认为是一个带有X,Y的表格。int[,] a=new int[3,4]{{0,1,2,4}{5,6,7,8}};可以通过唯一索引(即行索引和列索引来访问数据)
  5. 使用循环来处理二维数组:
 //定义一个多维数组,二行四列int[,] vs = new int[2, 4] { { 0,1,2,3},{4,5,6,7} };//输出二维数组中每个元素的值for (int i = 0; i < 2; i++){for (int j = 0; j < 4; j++){Console.WriteLine(vs[i,j]);}}Console.WriteLine(vs.GetLength(0));//2

C#的Array类

  1. Array类是C#中所有数组的基类,提供了各种用于数组的属性和方法。
  2. Array的属性:
        IsFixedSize:获取一个值,指示该数组是否带有固定大小。
        IsReadOnly:获取一个值,指示该数组是否只读。
        Length:获取一个32位整数,该值表示数组的中的元素总数
        LongLength:获取一个64位整数,该值表示数组中的元素整数。
        Rank:获取数组的秩(维度(维数1 2 ))。
    方法:
        Clear:(不是清除)根据元素类型,设置数组中某个范围为0,或false或null.
  //使用Array的Clear函数Array.Clear(arr, 0, 2);for (int i = 0; i < arr.Length; i++){Console.WriteLine(arr[i]);//0 0 3 4 }

Copy(Array1,Array2,Int32):从源数组的第一个元素开始复制某个范围(元素数量)的元素到另一个数组的第一个元素开始位置。Buffer.BlockCopy()复制指定字节到目标数组(指定字节偏移量)
    CopyTo(Array,Int32):从当前一维数组复制所有元素到指定的一维数组的指定索引位置。
    GetType:获取当前实例的类型。从对象(Object)继承;
    GetValue(Int32): 获取一维数组中指定位置的值。
    IndexOf(Array,Object): 搜索指定的对象,返回整个数组中第一次出现该元素的索引位置。
    Reverse(Array): 逆转整个一维数组中元素的顺序
    SetValue(Object,Int32):给一维数组中的某个索引位置设置Value值。
    Sort(Array):使用数组的每个元素的IcomOarable实现来排序整个一维数组中的元素;
    ToString:返回一个表示当前对象的字符串。从对象(Object)继承

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp2
{class Program{static void Main(string[] args){//定义一个多维数组,二行四列//int[,] vs = new int[2, 4] { { 0,1,2,3},{4,5,6,7} };输出二维数组中每个元素的值//for (int i = 0; i < 2; i++)//{//    for (int j = 0; j < 4; j++)//    {//        Console.WriteLine(vs[i,j]);//    }//}//Console.WriteLine(vs.GetLength(0));//2int[] arr = { 1,4, 3, 2};//使用LongLengthConsole.WriteLine(arr.LongLength);//4//使用Rank获取数组维数//Console.WriteLine(vs.Rank);//使用Clear函数//Array.Clear(arr, 0, 2);//for (int i = 0; i < arr.Length; i++)//{//    Console.WriteLine(arr[i]);//0 0 3 4 //}//Buffer.BlockCopy()//Array.Copy(arr, arr, 5);//排序//Array.Sort(arr);//升序Array.Sort<int>(arr);Array.Reverse(arr);//反转for (int i = 0; i < arr.Length; i++){Console.WriteLine(arr[i]);//4321    1234}Console.ReadKey();}}
}

C#集合(Collection)
    1.集合(Collection)和数组比较类似,都用于存放一组值,但集合中提供特定的方法能直接操作集合中的数据,并提供了不同的集合类来实现特定的功能。
    2.集合简单来说就是数组的升级版,它可以动态的对集合长度(也就是集合内最大元素的个数)进行定义和维护。
    3.集合就是一种动态的可变的数组,可以存放不同类型的多个元素。
    4.所有集合类与集合相关的接口命名空间都是System.Collection,该命名空间提供常用接口如见下表。

IEnumerable 用于迭代集合中的项,该接口是一种声明式的接口
IEnumerator 用于迭代集合中的项,该接口是一种实现式的接口
ICollection .NET 提供的标准集合接口,所有的集合类都会直接或间接地实现这个接口
IList 继承自 IEnumerable 和 ICollection 接口,用于提供集合的项列表,并允许访问、查找集合中的项
IDictionary 继承自 IEnumerable 和 ICollection 接口,与 IList 接口提供的功能类似,但集 合中的项是以键值对的形式存取的
DictionaryEnumeratoIr 用于迭代 IDictionary 接口类型的集合

针对上表的接口有一些常用的接口实现类,如小表显示:

类名称 实现接口 特点
ArrayList ICollection、IList、IEnumerable、ICloneable 集合中元素的个数是可变的,提供添加、删除等方法
Queue ICollection、IEnumerable、ICloneable 集合实现了先进先出的机制,即元素将在集合的尾部添加、在集合的头部移除
Stack ICollection、IEnumerable、ICloneable 集合实现了先进后出的机制,即元素将在集合的尾部添加、在集合的尾部移除
Hashtable IDictionary、ICollection、IEnumerable、 ICloneable 等接口 集合中的元素是以键值对的形式存放的,是 DictionaryEntry 类型的
SortedList IDictionary、ICollection、IEnumerable、 ICloneable 等接口 与 Hashtable 集合类似,集合中的元素以键值对的形式存放,不同的是该集合会按照 key 值自动对集合中的元素排序

最常用的集合类简介:

C# ArrayList类:动态数组
     ArrayList类是最常用的集合类,与数组的操作方法类似。
     ArrayList代表了可被单独索引的对象的有序集合,他基本上可以代替一个数组(使用索引进行操作)
     但是,与数组不同的是,ArrayList 可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。同时ArrayList也允许在列表中进行动态内存分配,增加,搜索,排序各项
创建ArrayList类的对象:

ArrayList listl=new ArrayList();//集合容量为默认容量
ArrayList list2=new ArrayList(listl);//根据集合创建ArrayList对象
ArrayList list3=new ArrayList(20);//创建ArrayList对象实例并制定其初始容量。
属性或方法 作用
int Add(object value) 向集合中添加 object 类型的元素,返回元素在集合中的下标
void AddRange(ICollection c) 向集合中添加另一个集合 c
Capacity 属性,用于获取或设置集合中可以包含的元素个数
void Clear()  从集合中移除所有元素
bool Contains(object item) 判断集合中是否含有 item 元素,若含有该元素则返回 True, 否则返回 False
void CopyTo(Array array) 从目标数组 array 的第 0 个位置开始,将整个集合中的元素复制到类型兼容的数组 array 中
void CopyTo(Array array,int arraylndex) 从目标数组 array 的指定索引 arraylndex 处,将整个集合中的元素赋值到类型兼容的数组 array 中
void CopyTo(int index,Array array,int arrayIndex,int count) 从目标数组 array 的指定索引 arrayindex 处,将集合中从指定索引 index 开始的 count 个元素复制到类型兼容的数组 array 中
Count 属性,用于获取集合中实际含有的元素个数
int IndexOf(object value) 返回 value 值在集合中第一次出现的位置
int IndexOf(object value,int startIndex) 返回 value 值在集合的 startindex 位置开始第一次出现的位置
int IndexOf(object value,int startIndex,int count) 返回 value 值在集合的 startindex 位置开始 count 个元素中第一次出现的位置
int LastIndexOf(object value)  返回 value 值在集合中最后一次出现的位置
int LastIndexOf(object value,int startIndex) 返回 value 值在集合的 startindex 位置开始最后一次出现的位置
int LastIndexOf(object value,int startIndex,int count) 入元素 value值在集合的 startindex 位置开始 count 个元素中最后一次出现的位置
void Insert(int index,object value) 返回 value 向集合中的指定索引 index 处插
void InsertRange(int index,ICollection c)  向集合中的指定索引 index 处插入一个集合
void Remove(object obj) 将指定兀素 obj 从集合中移除
void RemoveAt(int index) 移除集合中指定位置 index 处的元素
void RemoveRange(int index,int count) 移除集合中从指定位置 index 处的 count 个元素
void Reverse()  将集合中的元素顺序反转
void Reverse(int index,int count) 将集合中从指定位置 index 处的 count 个元素反转
void Sort() 将集合中的元素排序,默认从小到大排序
void Sort(IComparer comparer)  将集合中的元素按照比较器 comparer 的方式排序
void Sort(int index,int count,IComparer comparer) 将集合中的元素从指定位置 index 处的 count 个元素按照比较器 comparer 的方式排序
void TrimToSize() 将集合的大小设置为集合中元素的实际个数

C#数组和集合类详解相关推荐

  1. Java集合排序及java集合类详解

    Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...

  2. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

  3. 旋转排序数组系列题详解

    旋转排序数组系列题详解 文章目录 旋转排序数组系列题详解 一.问题描述:旋转数组的最小数字 二.分析:二分查找 三.代码 四.问题描述:寻找旋转排序数组中的最小值 五.分析:二分搜索 六.代码 七.问 ...

  4. java唯一并且有序集合_成都汇智动力-Java集合类详解

    原标题:成都汇智动力-Java集合类详解 java中集合类主要有两大分支: (1)Collection (2)Map Collection接口 一个Collection代表一组Object,即Coll ...

  5. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  6. C语言 字符数组 和 字符串 详解

    C语言 字符数组 和 字符串 详解 用来存放字符的数组称为字符数组,例如: char a[10]; //一维字符数组 char b[5][10]; //二维字符数组 char c[20]={'c', ...

  7. pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解

    对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...

  8. linux jq 遍历数组,jquery 遍历数组 each 方法详解

    JQuery拿取对象的方式 $('#id') :通过元素的id $('tagName') : 通过元素的标签名 $('tagName tagName') : 通过元素的标签名,eg: $('ul li ...

  9. java生成字符串数组_Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...

  10. C语言数组之间赋值详解

    数组之间的赋值,C语言数组之间赋值详解 (biancheng.net)

最新文章

  1. 利用gevent实现异步执行任务
  2. UVA11817 Tunnelling the Earth(计算几何、经纬度转空间坐标、球面距离)
  3. HDU3496-Watch The Movie
  4. 统一沟通-技巧-9-Lync 2010-Outlook 2010-自动配置-2-普通人员
  5. wordpress使用二级域名绑定七牛云存储做图片存储站
  6. 1028. 人口普查(20)
  7. 【算法设计与分析】07 算法的数学基础
  8. CV算法助理 | 华为外包招聘
  9. jsp+左间距_DIV间距设置
  10. POSIX 信号量和互斥锁
  11. .html与.htm为网页后缀的区别
  12. 微信小程序开发04-打造自己的UI库
  13. discuz开发经验discuz x3 怎么在帖子列表显示论坛板块图标
  14. EdrawMax Crack,跨平台图表软件
  15. abaqus单位问题
  16. CAN FD 总线协议深度解析-简单易懂协议详解
  17. iOS 高德地图实现大头针展示,分级大头针,自定制大头针,在地图上画线,线和点共存,路线规划(驾车路线规划),路线导航,等一些常见的使用场景
  18. 10部关于数学的顶级纪录片
  19. uniapp的打包h5页面收不到验证码接口
  20. 视频播放JZVideoPlayer

热门文章

  1. web开源FlowPlayer视频播放器
  2. 如何调整html中音乐播放器的大小,请教音乐播放器大小如何调整?
  3. python画七彩圆圈_【彩虹手工】 创意彩虹帽子,吊饰,绘画,玩具,给孩子们一个七彩梦吧!...
  4. 计算机维护费可以跨年吗,税控技术维护费是否可以跨年抵扣?
  5. Python美女图片爬虫实战
  6. oracle数据库sql语句插入时间信息
  7. pywinauto实现微信消息自动发送
  8. 【学习资源分享】在线学习平台推荐
  9. access通过身份证号提取性别_身份证号码男女函数(excel中关于18位身份证号的提取性别公式)...
  10. Python 识别图片文字( Tesseract 安装使用 )