四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2531|回复: 0
打印 上一主题 下一主题

C#中数组与ArrayList的简单使用

[复制链接]
  • TA的每日心情
    开心
    2018-7-4 09:08
  • 97

    主题

    392

    帖子

    6095

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    6095
    跳转到指定楼层
    楼主
    发表于 2016-11-1 11:25:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1. 多维数组
    2. 锯齿数组
    3. 数组的常用操作
    4. ArrayList


    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)); //错误
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-5-5 04:38 , Processed in 1.062500 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表