一:区别

[] 特定类型 固定长度的
int[] arr = new int[] { 1, 2, 3 };
 
List 特定类型 任意长度
 List<int> list = new List<int>();
 
Array 任意类型 固定长度
Array array = Array.CreateInstance(System.Type.GetType("System.Int32"), 3); // Array 是抽象类,不能使用 new Array 创建。
通过存储 object 实现任意类型的,所以使用时要转换。
ArrayList 任意类型 任意长度
 ArrayList arrayList = new ArrayList(3);
通过存储 object 实现任意类型的,所以使用时要转换。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;public partial class _Default : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){// System.Int32 是结构int[] arr = new int[] { 1, 2, 3 };Response.Write(arr[0]); // 1
        Change(arr);Response.Write(arr[0]); // 2// List 的命名空间是 System.Collections.GenericList<int> list = new List<int>();list.Add(1);list.Add(2);list.Add(3);Response.Write(list[0]); // 1
        Change(list);Response.Write(list[0]); // 2// Array 的命名空间是 SystemArray array = Array.CreateInstance(System.Type.GetType("System.Int32"), 3); // Array 是抽象类,不能使用 new Array 创建。array.SetValue(1, 0);array.SetValue(2, 1);array.SetValue(3, 2);Response.Write(array.GetValue(0)); // 1
        Change(array);Response.Write(array.GetValue(0)); // 2// ArrayList 的命名空间是 System.CollectionsArrayList arrayList = new ArrayList(3);arrayList.Add(1);arrayList.Add(2);arrayList.Add(3);Response.Write(arrayList[0]); // 1
        Change(arrayList);Response.Write(arrayList[0]); // 2
    }private void Change(int[] arr){for (int i = 0; i < arr.Length; i++){arr[i] *= 2;}}private void Change(List<int> list){for (int i = 0; i < list.Count; i++) // 使用 Count
        {list[i] *= 2;}}private void Change(Array array){for (int i = 0; i < array.Length; i++) // 使用 Length
        {array.SetValue((int)array.GetValue(i) * 2, i); // 需要类型转换
        }}private void Change(ArrayList arrayList){for (int i = 0; i < arrayList.Count; i++) // 使用 Count
        {arrayList[i] = (int)arrayList[i] * 2; // 需要类型转换
        }}
}

另外。

把一个对象数组转换成ArrayList可以使用ArrayList.Adaper方法。这个方法把一个IList包裹在一个ArrayLIst里。

Person[] personArray = myPerson.GetPersons();
ArrayList personList = ArrayList.Adapter(personArray);

把一个ArrayList转换成对象数组可以使用ArrayList.ToArray方法。

Person[] personArrayFromList = (Person[])personList.ToArray(typeof(Person));

不要忘了在调用ArrayList.ToArray方法之前进行强制类型转换,否则在编译的时候会出错提示你不能把一个ArrayList转换成Person对象数组。

二:原理

---恢复内容结束---

转载于:https://www.cnblogs.com/wenbin891428/p/4377893.html

解析C#中[],List,Array,ArrayList的区别及应用相关推荐

  1. arm remapping控制输入_解析机器视觉中运动控制卡与PLC的区别

    运动控制卡与PLC都是控制器,主要负责工业自动化系统中运动轴控制.输入输出信号控制: PLC肯定是通用一些,通讯组态都比较灵活,选择也很多!一般运动控制卡CPU模块是4轴,但可以扩展,现在大部分都能扩 ...

  2. 详细解析Java中抽象类和接口的区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

  3. 【转】详细解析Java中抽象类和接口的区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

  4. 详细解析Java中抽象类和接口的区别(很容易理解错)

    2007-09-28 12:17作者:doublel出处:论坛整理责任编辑:方舟 在Java语言中, abstract class 和interface是支持抽象类定义的两种机制.正是由于这两种机制的 ...

  5. 在Java中Vector和ArrayList的区别

    http://www.jdon.com/jivejdon/thread/11661.html 1,vector是线程同步的,所以它也是线程安全的,而arraylist是线程异步的,是不安全的.如果不考 ...

  6. java list 区别_Java中List和ArrayList的区别

    List是一个接口,而ListArray是一个类. ListArray继承并实现了List. 所以List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造. Lis ...

  7. Java并发编程之:Vector和ArrayList的区别

    2019独角兽企业重金招聘Python工程师标准>>> Java中Vector和ArrayList的区别 首先看这两类都实现List接口,而List接口一共有三个实现类,分别是Arr ...

  8. c#中Dictionary、ArrayList、Hashtable和数组 Array 的区别(转)

    C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个 ...

  9. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别...

    ArrayList和Vector的区别 ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的. ...

最新文章

  1. LeetCode简单题之构造矩形
  2. 如何用LSTM自编码器进行极端事件预测?(含Python代码)
  3. 洛谷-小鱼的游泳时间-洛谷的第一个任务
  4. c语言 二级菜单_收下计算机二级秘笈,考场上说好不哭!
  5. db2与oracle的区别 锁,db2和oracle语句区别
  6. publiccms中将推荐页的内容显示在页面片段中
  7. Cloud一分钟 | 马云发表致股东的公开信;5G算什么?中国已着手研究6G相关工作...
  8. 树状数组相关应用之平面范围求和问题
  9. Mysql体系结构及sql执行过程总结
  10. Phpstorm-php在线手册配置
  11. android js桥接,一种JavaScript和原生APP之间数据交互方法与流程
  12. 欧姆龙NJ 中大型PLC高端型搭载欧姆龙NB触摸屏
  13. 资料:线性代数与空间解析几何知识点全汇总
  14. 黑盒与白盒到底是什么?
  15. mysql frm idb_MySQL利用frm和idb文件进行数据恢复MySQL利用frm和idb文件进行数据恢复...
  16. 2022-2028年全球厨房炉灶行业供需分析及发展前景研究报告
  17. java 消息推送的几种方式比较
  18. WPF实现炫酷Loading控件
  19. AVFoundation学习记录
  20. The Google File System 中文版论文(转载)

热门文章

  1. kubernetes中port、target port、node port的对比分析,以及kube-proxy代理
  2. c#文件夹常用操作,属性设置,遍历、压缩
  3. tf.shape()和tf.reshape()
  4. AttributeError: module 'tensorflow' has no attribute 'python'
  5. 微波网络转移参量[A]表示阻抗矩阵[Z]和导纳矩阵[Y]
  6. 8086状态标志寄存器的英文含义(调试用
  7. OpenGL加载2D的草地
  8. Ubuntu vi命令
  9. BZOJ2655 calc(动态规划+拉格朗日插值法)
  10. BZOJ3209(luogu 4317)花神的数论题题解