zoukankan      html  css  js  c++  java
  • C#中数组与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)); //错误
  • 相关阅读:
    依次逐个亮灯并且每次只能亮一个灯的跑马灯程序
    逐个点亮LED灯,再逐个熄灭LED灯的跑马灯程序---基于74HC595移位锁存器,程序框架用switch语句
    把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式
    两片联级74HC595驱动16个LED灯的基本驱动程序
    树莓派
    Linux I2C驱动
    转:使用 /proc 文件系统来访问 Linux 内核的内容
    转: 使用 /sys 文件系统访问 Linux 内核
    树梅派 -- 通过/sys读写ADC芯片 pcf8591
    树莓派 -- oled 续(2) python
  • 原文地址:https://www.cnblogs.com/rainman/p/3085341.html
Copyright © 2011-2022 走看看