1. 多维数组

多维数组:行数和列数在定义时已确定

string[,] arr = new string[2, 3];
arr[0, 0] = "坐标:1-1";
arr[0, 1] = "坐标:1-2";
arr[0, 2] = "坐标:1-3";
arr[1, 0] = "坐标:2-1";
arr[1, 1] = "坐标:2-2";
arr[1, 2] = "坐标:2-3"; int m = arr.GetLength(0); // 行数
int n = arr.GetLength(1); // 列数 StringBuilder str = new StringBuilder(); // 类似于String类型变量 for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
str.Append(arr[i, j] + " ");
}
}
Console.WriteLine(str.ToString());

2. 锯齿数组

锯齿数组:行数确定,列数不定,数组里套数组。

int[][] arr = new int[3][];
arr[0] = new int[] { 1, 2, 3, 4 };
arr[1] = new int[] { 100 };
arr[2] = new int[] { 10, 20, 30 }; foreach (int[] i in arr) {
foreach (int x in i) {
Console.WriteLine(x); // 遍历所有元素
}
}
Console.WriteLine(arr[2][2]); // 访问单一元素,注意和多维素组的差别,会输出30

3. 数组的常用操作

  • arr.Length属性:数组中元素个数;
  • arr.GetLength(n):获取数组arr第n维元素的个数;
  • arr.Rank:获取数组arr的维数;

①克隆数组,就是复制一份新的

int[] arr = new int[] { 1, 2, 3, 4};
int[] arr2 = (int[])arr.Clone();
for (int i = 0; i < arr2.Length; i++)
{
Console.Write(arr2[i]);
}

4. ArrayList

命名空间:using System.Collections;

ArrayList就是传说中的动态数组,它可以动态的增加和减少元素,另外它可以存储任意个数和任意类型的元素。

属性

  • Count属性是目前ArrayList包含的元素的数量,这个属性是只读的
  • Capacity属性是目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。

方法

  • Add(v):添加一个元素(参数v,任何类型)到当前列表的末尾
  • AddRange方法用于添加一批元素到当前列表的末尾
  • Remove方法用于删除一个元素,通过元素本身的引用来删除
  • RemoveAt(i):方法用于删除一个元素,通过索引值(参数i)来删除
  • RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除
  • Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动
  • InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
  • Clear():方法用于清除现有所有的元素
  • Contains(v):方法用来查找某个对象(参数v)在不在列表之中
  • ToArray(Type t):这个方法把ArrayList的元素Copy到一个新的数组中,参数为Type类型

① 简单使用

ArrayList list = new ArrayList();  // 声明变量

list.Add(2);
list.Add("北京");
list.Add(new int[] { 2, 4, 6 });
list.Add("南京");
list.Add(3); foreach (var p in list) {
Console.Write(p.ToString() + " | "); // 输出:2 | 北京 | System.Int32[] | 南京 | 3 |
}

② ArrayList与数组转换

元素类型相同的转换

ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3); // 转换方式1:ToArray()
int[] list2 = (int[])list.ToArray(typeof(int)); // 转换方式2:CopyTo()
int[] list3 = new int[list.Count];
list.CopyTo(list3);

元素类型不同的转换

ArrayList arr = new ArrayList(){ "北京", 1};   //往数组中添加不同类型的元素

object[] arr2 = (object[])arr.ToArray(typeof(object)); //正确
string[] arr3 = (string[])arr.ToArray(typeof(string)); //错误

C#中数组与ArrayList的简单使用的更多相关文章

  1. C#中数组、ArrayList和List三者的区别

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  2. C#中数组、ArrayList和List<T>三者的发展历程

    在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...

  3. C#中数组、ArrayList和List三者的区别 转

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  4. 【转载】 C#中数组、ArrayList和List三者的区别

    原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ...

  5. 问题:C# List;结果:C#中数组、ArrayList和List三者的区别

    C#中数组.ArrayList和List三者的区别 分类: [C#那些事] 2013-03-11 00:03 36533人阅读 评论(23) 收藏 举报 目录(?)[+] 在C#中数组,ArrayLi ...

  6. (转)C#中数组、ArrayList和List三者的区别

    原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ...

  7. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  8. C#中数组,ArrayList与List对象的区别

    在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...

  9. C#.NET中数组、ArrayList和List三者的区别

    数组在C#.NET中是最早出现的,在内存中是顺序连续存储的,所以它的索引速度非常快,赋值与修改元素也很简单:但是,也正因为数组是顺序连续存储的,在两个数据间插入数据是很不方便的,而且在声明数组的时候必 ...

随机推荐

  1. Hexo 自动同步

    灵感 最近认证阿里云学生用户,参与ESC服务器9.9元/月的活动,准备先搭建一个博客网站,写写自已的心得以及经验.之前也搭建过网站,最后由于个人没时间(没时间是假的,就是懒.哈哈)的原因导致最后服务器 ...

  2. Tensorflow 学习笔记 -----gradient

    Tensorflow 的求梯度函数: [db, dW, dx] = tf.gradient(C, [b, w, x]) 在调试时用处较大. 实例: import tensorflow as tf im ...

  3. Java基础关于Map(字典)的方法使用

    Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...

  4. 【 Codeforces Round #425 (Div. 2) D】Misha, Grisha and Underground

    [Link]:http://codeforces.com/contest/832/problem/D [Description] 给你一棵树; 然后给你3个点 让你把这3个点和点s,t,f对应; 然后 ...

  5. 【Uva 1630】Folding

    [Link]: [Description] 你能对字符串进行压缩的操作; 即把连续出现的相同的子串改成它出现的次数+这个最基本的字符串的形式; 问你这个字符串最短能被压缩得多短; [Solution] ...

  6. 将yyyyMMdd格式的字符串转成日期DateTime格式

    1.DateTime dt= DateTime.ParseExact("20110720", "yyyyMMdd", Thread.CurrentThread. ...

  7. Lua刚開始学习的人(一)--Lua 简单教学

    近期因为工作原因.临时木有<Oracle起步学习>续集.领导知道学习下Lua脚本语言.看了一周了.趁热打铁,留下点实用的东西吧. 本系列会主要针对宿主语言为 Delphi,原理都是一样的, ...

  8. Linux经常使用命令(十六) - whereis

    whereis命令仅仅能用于程序名的搜索(程序安装在哪?).并且仅仅搜索二进制文件(參数-b).man说明文件(參数-m)和源码文件(參数-s). 假设省略參数,则返回全部信息. 和find相比.wh ...

  9. java基本的语法

     Java语言发展史 课程大纲: Java语言发展史: 1.sun公司1995年推出,2009年Oracle公司收购sun: 下载: 1.到Oracle官网下载 Java体系与特点 课程大纲: J ...

  10. Kinect 开发 —— 骨骼追踪 (下)

    基于景深数据的用户交互 骨骼数据中关节点不仅有X,Y值,还有一个深度值 除了使用WPF的3D特性外,在布局系统中可以根据深度值来设定可视化元素的尺寸大小来达到某种程序的立体效果. 下面的例子使用Can ...