当前位置:   article > 正文

C# 数组、ArrayList、List_c#存放数组的数组

c#存放数组的数组

在C#中,数组、ArrayList、List都能够存储一组对象。

1 数组

1.1 特点

  • 最早出现
  • 在内存中连续存储,索引速度快
  • 插入、删除元素效率低
  • 声明时必须指定类型和大小

1.2 数组的声明

数组的声明方式:

方式一:在定义数组时即给出具体元素,数组的长度由大括号里面元素个数决定。

string[] str = {"str1","str2","str3","str4"}

方式二:在定义数组时即给出具体元素,数组的长度由大括号里面元素个数决定。C#还支持将new关键字作为声明语句的一部分使用。 使用new关键字是告诉“运行时”为数据类型分配内存。任何时候将new关键字作为数组赋值的一部分使用,都可以同时在方括号内指定数组的大小。

string[] str = new string[]{"str1","str2","str3","str4"}

或 string[] str = new string[4]{"str1","str2","str3","str4"}

方式三:先定义数组并给出长度,后赋值。

string[] str=new string[4],

str[0]="str1",

str[1]="str2",

str[2]="str3",

str[3]="str4",

特殊说明:分配一个数组但不指定初始值仍然会初始化每个元素。“运行时”会将每个元素初始化为它们的默认值,如下所示:

  • 引用类型(比如string)初始化为null;
  • 数值类型初始化为零;
  • bool初始化为false;
  • char初始化为\0。

1.3 例程

在 Main 方法中创建一个字符串类型的数组,并存入 5 个值,然后将数组中下标是偶数的元素输出。

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. string[] strs = { "aaa", "bbb", "ccc", "ddd", "eee" };
  6. for(int i = 0; i < strs.Length; i = i + 2)
  7. {
  8. Console.WriteLine(strs[i]);
  9. }
  10. }
  11. }

2 ArrayList

ArrayList是.NET Framework提供的用于数据存储和检索的专用类。

优点:

  • 可根据存储的数据来动态调整大小,无需指定数组的长度
  • 插入、删除元素效率更高
  • 可以插入不同类型的数据(统一转换成object类型)
  • object是C#中所有类型的基类,如:

缺点:

  • 由于不同类型都能添加进去,在调用时容易出错,类型不安全
  • 赋值和提取都需要和object进行转换,损耗性能

3 泛型List

3.1 特点

  • 在声明List集合时,我们同时需要为其声明List集合内数据的对象类型
  • 避免了数据类型安全问题与装箱拆箱的性能问题

3.2 声明方式

  1. //添加引用
  2. Using System.Collections.Generic;
  3. //声明,T为类型参数,例如bool,byte,int
  4. List<T>list = new List<T>();

3.3 list常见的属性和方法

属性:

  • Capacity: 获取容量的大小(容量大于含有元素的个数)
  • Count: 获取元素个数

方法:

  • Add: 添加元素
  • Insert(): 插入元素
  • Cotains: 判断某个元素是否在list中
  • Clear: 清空
  • Sort(): 对列表中的元素进行从小到大的
  • Reverse(): 将List里面的元素顺序反转
  • RemoveAt(): 移除指定位置的元素
  • IndexOf(): 取得一个元素所在列表中的索引位置(从前往后搜索),没找到返回 -1
  • LastIndexOf: 取得一个元素所在列表中的索引位置(从后往前搜索),没找到返回 -1

3.4 实例讲解

定义一个 int[ ]数组类型的List,添加3个随机数组:[1], [1,2], [1,2,3] 。在索引为0处插入一个新的数组[1,2,3,4], 将list排序反转后,找出[1,2,3,4]的索引值,并显示新添加数组中的最小值和最大值。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace WindowsFormsApp3
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. private void button1_Click(object sender, EventArgs e)
  19. {
  20. int[] a = new int[1] { 1 };
  21. int[] b = new int[2] { 1,2 };
  22. int[] c = new int[3] { 1,2,3 };
  23. //int[] d = new int[4];
  24. //d[0] = 1;
  25. //d[1] = 2;
  26. //d[2] = 3;
  27. //d[3] = 4;
  28. //int[] d = { 1, 2, 3, 4 };
  29. int[] d = new int[4] { 1,2,3,4 };
  30. List<int[]> list = new List<int[]>();
  31. list.Add(a);
  32. list.Add(b);
  33. list.Add(c);
  34. list.Insert(0, d);
  35. list.Reverse();
  36. textBox1.Text = list.IndexOf(a).ToString();
  37. //求解数组中的最大与最小值
  38. List<int> list1 = new List<int>(d);
  39. list1.Sort();
  40. int min = Convert.ToInt32(list1[0]);
  41. textBox2.Text = min.ToString();
  42. int max = Convert.ToInt32(list1[list.Count - 1]);
  43. textBox3.Text = max.ToString();
  44. }
  45. }
  46. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/571907
推荐阅读
相关标签
  

闽ICP备14008679号