美文网首页
C# 数组、列表、字符串

C# 数组、列表、字符串

作者: 李霖弢 | 来源:发表于2019-10-22 20:37 被阅读0次

    数组 Array

    数组是一个同一类型变量的集合。
    Array在创建时候即分配好了存储空间,之后无法再改变长度。

    通过.Length属性可以获得数组所有维度元素数量之和

    数组声明
    datatype[] arrayName;
    
    数组赋值

    使用new创建数组实例
    当数组初始化时,每个元素会根据类型隐式初始化为一个默认值。例如,int 数组的所有元素都会被初始化为 0。

    double[] balance = new double[10];
    balance[0] = 4500.0;
    

    或在声明的同时进行初始化/赋值。

    double[] balance = { 2340.0, 4523.69, 3421.0};
    var arr = new[] { 1, 10, 100, 1000 };
    

    使用数组初始值设定项

    int[] marks = new int[5]  { 99,  98, 92, 97, 95};
    //此时可以省略数组的大小,比如:
    int[] marks = new int[]  { 99,  98, 92, 97, 95};
    

    将一个数组赋值给另一个数组时,目标和源会指向相同的内存位置:

    int[] marks = new int[]  { 99,  98, 92, 97, 95};
    int[] score = marks;
    
    多维数组和交错数组

    多维数组每一行都是固定的,交错数组的每一行可以有不同的大小

    • 二维数组
    int [,] a = new int [3,4] {
     {0, 1, 2, 3} ,   /*  初始化索引号为 0 的行 */
     {4, 5, 6, 7} ,   /*  初始化索引号为 1 的行 */
     {8, 9, 10, 11}   /*  初始化索引号为 2 的行 */
    };
    int val = a[2,3];//11
    
    • 交错数组
      交错数组是数组的数组。交错数组是一维数组。类似JS的嵌套数组。
    int[][] scores = new int[5][];
    for (int i = 0; i < scores.Length; i++) 
    {
       scores[i] = new int[4];
    }
    

    或直接赋值

    int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};
    
    参数数组
    public int AddElements(params int[] arr)
    {
      int sum = 0;
      foreach (int i in arr)
      {
        sum += i;
      }
      return sum;//2938
    }
    ...
    AddElements(512, 720, 250, 567, 889)
    
    数组方法
    • 判断数组中位置
      Array.IndexOf( arr , item )

    ArrayList

    引入命名空间:using System.Collections;
    ArrayList中长度是动态的,且可插入不同类型的数据。因为ArrayList会把所有插入其中的数据当作为object类型来处理,在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。

    通过.Count属性可以获得ArrayList元素数量

    声明
    ArrayList arrayListTest = new ArrayList();
    ArrayList arrayListTest = new ArrayList(5);
    var arrayListTest = new ArrayList<string> { "name", "Ana", "Felipe" };
    ArrayList arrayListTest = new ArrayList(ArrayOrArrayList);
    
    添加元素
    • 在末尾添加元素 .Add() 和 .AddRange()
    intArrayList.Add(50);
    intArrayList.AddRange(new int[] { 2,2,2 });
    
    • 指定位置添加 .Insert() 和 .InsertRange()
    intArrayList.Insert(0,50);
    intArrayList.InsertRange(0,new int[] { 2,2,2 });
    
    删除元素 .RemoveAt() 和 .RemoveRange() .Remove()

    删除后,后方元素会前移,因此需注意越界问题

    intArrayList.RemoveAt(0);
    intArrayList.RemoveRange(0,2);//删除第0,1个
    intArrayList.Remove("hello");//删除第一个遇到的"hello"
    

    列表 List<T>

    引入命名空间:using System.Collections.Generic;
    List具有与ArrayList相似的属性和方法,但在声明List集合时,需要为其声明List集合内数据的对象类型。
    List避免了拆装箱并保证了类型安全,因此是最推荐使用的。

    List<string> list = new List<string>();
    var list = new List<string> { "name", "Ana", "Felipe" };
    var list = new List<int>(ArrayOrList);
    
    查找位置 .IndexOf()
    排序 .Sort() (改变原值)

    字符串 String

    可以通过以下方法创建字符串

    1. 通过给 String 变量指定一个字符串
    2. 通过使用 String 类构造函数
    char[] letters = { 'H', 'e', 'l', 'l','o' };
    string greetings = new string(letters); 
    
    1. 通过使用字符串串联运算符( + )
    2. 通过检索属性或调用一个返回字符串的方法(如String.Join)
    3. 通过格式化方法来转换一个值或对象为它的字符串表示形式(如String.Format)

    相关文章

      网友评论

          本文标题:C# 数组、列表、字符串

          本文链接:https://www.haomeiwen.com/subject/tnecvctx.html