C#数组,ArrayList,List
一、数组声明方式
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的更多相关文章
- C#基础-数组-ArrayList
数组ArrayList using System.Collections; //表示引入集合的命名空间 数组ArrayList容量本身是不固定的,根据存储的数据动态变化 // 声明一个ArrayLis ...
- Java 数组ArrayList语法
恶补基础,记录一下数组ArrayList的常用语法 1.导入 import java.util.ArrayList; 2.定义数组list ArrayList<类名> list = new ...
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- 比较Java数组,ArrayList,LinkedList,Vector 性能比较
public class PerformanceTester { public static final int TIMES=100000; public static abstract class ...
- 动态数组 - ArrayList
前言 如果数组的大小要随时间变化,那么数组操作起来就比较麻烦. 在C++中,这种情况要用到动态向量Vector. 而Java中,提供了一种叫做ArrayList的泛型数组结构类型,提供相似的作用. 其 ...
- C#动态数组ArrayList和List<T>的比较
C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...
- 动态数组ArrayList的使用
1.定义类 package com.realhope.rmeal.bean; /** * * @author Wucy * 菜谱类 */ public class Menu{ private Inte ...
- java 遍历方法 及 数组,ArrayList,HashMap,HashSet的遍历
一,遍历方法的实现原理 1.传统的for循环遍历,基于计数器的: 遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后,停止.主要就是需要按元素的位置来读取元素. ...
- 关于C#中的动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类与Array类的区别 ArrayList类实 ...
随机推荐
- EXcel vba 获取批注信息
Public Function pizhu(i As Range) pizhu = i.Cells.Comment.Text End Function EXcel VBA获取批注信息
- 关于The specified Android SDK Build Tools version (26.0.2) is ignored, as it is below the minimum...
今天将项目迁移到另一台笔记本,进行build出现以下问题,导致build失败 The specified Android SDK Build Tools version (26.0.2) is ign ...
- OpenSSL + Windows 下载安装
Download Win32 OpenSSLhttps://slproweb.com/products/Win32OpenSSL.htmlhttps://wiki.openssl.org/index. ...
- .NET成年了,然后呢?
作者|Lex Li 编辑|郭蕾 这可能是唯一一篇系统回顾 .NET 发展的文章..NET 的成年礼到了,你会送它什么? 2014 年 11 月 12 日,美国纽约曼哈顿,多云,气温适宜.微软公司执行副 ...
- TFS 生成任务报错:目录不是空的
转到代理目录下,将生成文件夹清空,重新启动生成任务即可
- es6 Proxy
proxy在语言层面去操作一个对象 var user={}; user.fname='Bob'; user.lname="Wood"; user.fullName= functio ...
- linux shell基本知识
shell script的一些注意事项: .#这个符号是注释本行,通常用来做批注用,#!除外,是用来标注用哪种shell执行本脚本, .执行顺序为从上到下,从做到右 .忽略空行,tab空格 .脚本换行 ...
- C# 之 向服务器上传资源
首先写客服端,winform 应用 或者 WPF 应用 模拟一个post提交: /// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// ...
- json 解析代码 全语言
Javascript: 1.使用eval var parse_json_by_eval = function(str){ return eval('('+str+')'); } var value = ...
- python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束
一.昨日内容回顾 1.mysql的安装 1).解压文件 添加环境变量bin 2).初始化mysql生成数据data文件夹: mysqld --initialize-insecure 3).mysqld ...