一、数组声明方式

  1,声明一个未经初始化的数组引用,以后可以把这引用初使化为一个数组实例

  int[] int_array;

  int_array = new int[2];

  注:数组的引用必须以相同或相关类型实例化,数组初使化默认值,值类型为0,引用类型为null

  2、声明一个数组引用并对他进行初使化,该数组引用被立即赋予一个数组的新实例。

  int[] int_array= new int[10];

  3、声明一个数组,初使化数组引用,并给数组元素赋值

  int[] int_array= new int[3] {1,2,3};

  注:初使化列表以逗号(,)隔开,且列表中的个数必须与数组长度一致。

4、与第三种方式基本相同,只是不设置数组的初使化大小,由数组元素确定。

int[] int_array= new int[] {1,2,3};

5、这是第四种方式的简化版,其中的数组类型与数组大小是根据初使化列表推断出来的。

int[] int_array= {1,2,3};

  多维数据

  多维数组为矩形数组,有多个维度与索引,维度在[]中用逗号隔开,“[,]”,例如最

  常见的二维数组:

  int[,] int_array= new int[2,3] {{1,2,3},{4,5,6}};

  交错数组

  交错数组被认为是一个数组的数组,交错数组的每一个矢量都可以有不同的长度。

  首先应定义交错数组中的行(矢量数),再声明每行的元素个数

  int[][] int_array= new int[2][]{new int[]{1,2,3},new int[] {1,2,3,4}}

  注意与二维数组的区别

二、数组,ArrayList,List三者的区别

  • 数组

优点:在内存中时连续的,速度较快,操作简单。

缺点:定义数组时要定义其长度,不是很灵活,过长过短都会造成问题。不方便进行数据的添加、插入和移除。

例如:int [] int_array=new int[4];

int_array[0]=111;

int_array[1]=123;//赋值

int_array[1]=1234;//修改

  • 集合ArrayList

优点:命名空间System.Collections下的一部分。大小是动态扩充与收缩的。在声明ArrayList对象时不需要指定它的长度。ArrayList继承了IList接口,可以很方便的进行数据的添加、插入和移除.

缺点:当向集合插入不同类型的数据后(ArrayList将数据当作object存储),在进行数据处理时容易出现类型不匹配的错误,使用时需要进行类型转换处理,存在装箱与拆箱操作,造成性能大量损耗的现象。

例如:ArrayList list = new ArrayList();

list.Add("aa");

list.Add(11);
         list[1] = 123;//修改

移除list.Remove(123);

list.RemoveAt(0);

  • 泛型List

优点:与集合ArrayList类似且继承IList接口,在声明List集合时也要声明集合内部数据的对象类型,避免了装箱和拆箱的问题。

例如:List<int> list=new List<int>();

list.Add(123);

list[0]=111;//修改

list.RemoveAt(0);//移除

如果list.Add("abc");//编译器就会报错,避免了类型安全问题与装箱拆箱的性能问题。

C#数组,ArrayList,List的更多相关文章

  1. C#基础-数组-ArrayList

    数组ArrayList using System.Collections; //表示引入集合的命名空间 数组ArrayList容量本身是不固定的,根据存储的数据动态变化 // 声明一个ArrayLis ...

  2. Java 数组ArrayList语法

    恶补基础,记录一下数组ArrayList的常用语法 1.导入 import java.util.ArrayList; 2.定义数组list ArrayList<类名> list = new ...

  3. 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解

    数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...

  4. [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)

    [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...

  5. 比较Java数组,ArrayList,LinkedList,Vector 性能比较

    public class PerformanceTester { public static final int TIMES=100000; public static abstract class ...

  6. 动态数组 - ArrayList

    前言 如果数组的大小要随时间变化,那么数组操作起来就比较麻烦. 在C++中,这种情况要用到动态向量Vector. 而Java中,提供了一种叫做ArrayList的泛型数组结构类型,提供相似的作用. 其 ...

  7. C#动态数组ArrayList和List<T>的比较

    C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...

  8. 动态数组ArrayList的使用

    1.定义类 package com.realhope.rmeal.bean; /** * * @author Wucy * 菜谱类 */ public class Menu{ private Inte ...

  9. java 遍历方法 及 数组,ArrayList,HashMap,HashSet的遍历

    一,遍历方法的实现原理 1.传统的for循环遍历,基于计数器的: 遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后,停止.主要就是需要按元素的位置来读取元素. ...

  10. 关于C#中的动态数组ArrayList

    在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类与Array类的区别 ArrayList类实 ...

随机推荐

  1. 封装cuda/cudnn写卷积网络前向计算程序

    目录 基本编译配置 一些常识 BN层的坑 cuda基础 向cuda核函数传入结构体指针? 参考:http://galoisplusplus.coding.me/blog/2018/05/22/cuda ...

  2. SQL Server INSET/UPDATE/DELETE的执行计划

    DML操作符包括增删改查等操作方式. insert into Person.Address (AddressLine1, AddressLine2, City, StateProvinceID, Po ...

  3. python---手动实现两个有序列表的合并

    可能又和标准的实现不一样, 但是自己的实现, 印象就会不一样的. # coding = utf-8 # 两个有序列表的合并,将two_list合并到one_list def merge_order_l ...

  4. delphi TreeView 从数据库添加节点的四种方法

    方法一:delphi中递归算法构建treeView 过程:通过读取数据库中table1的数据,来构建一颗树.table1有两个字段:ID,preID,即当前结点标志和父结点标志.所以整个树的表示为父母 ...

  5. textarea文本域宽度和高度width及height自动适应实现代码

    <HTML> <HEAD> <TITLE>textarea宽度.高度自动适应处理方法</TITLE> <!-- 控制宽度的自动适应 --> ...

  6. 解决win7 安装完jdk7后,再安装jdk8出现的问题 has value '1.8', but '1.7' is required.

    http://blog.csdn.net/qiyueqinglian/article/details/46605759 电脑装了jdk8,JAVA_HOME也是设置的8. 不删除8变回7. 改了JAV ...

  7. centos 6.8 安装git 报错

    报错信息: Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl               ...

  8. centos 6.9安装python 3.6

    .下载源码包在官网按照需要下载到本地 wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz .解压源码包 tar -xvf Pyt ...

  9. day3.python字符串格式化

    字符串格式化 注意:若在格式化输出中还需要再加%,需要两个%来代替 方法1:%控制格式化输出 例1: print("I'm %s. I'm %d year old" % ('Vam ...

  10. 配置windows批处理脚本(.bat)文件路径 | window批处理文件配置执行路径

    以PHP的composer为例 1 . 路径D:\phpStudy\php\php-5.5.38加入环境变量 2.在路径D:\phpStudy\php\php-5.5.38新建composer.bat ...