C#中数组与ArrayList的简单使用
1. 多维数组
多维数组:行数和列数在定义时已确定
string[,] arr = new string[2, 3];
arr[0, 0] = "坐标:1-1";
arr[0, 1] = "坐标:1-2";
arr[0, 2] = "坐标:1-3";
arr[1, 0] = "坐标:2-1";
arr[1, 1] = "坐标:2-2";
arr[1, 2] = "坐标:2-3"; int m = arr.GetLength(0); // 行数
int n = arr.GetLength(1); // 列数 StringBuilder str = new StringBuilder(); // 类似于String类型变量 for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
str.Append(arr[i, j] + " ");
}
}
Console.WriteLine(str.ToString());
2. 锯齿数组
锯齿数组:行数确定,列数不定,数组里套数组。
int[][] arr = new int[3][];
arr[0] = new int[] { 1, 2, 3, 4 };
arr[1] = new int[] { 100 };
arr[2] = new int[] { 10, 20, 30 }; foreach (int[] i in arr) {
foreach (int x in i) {
Console.WriteLine(x); // 遍历所有元素
}
}
Console.WriteLine(arr[2][2]); // 访问单一元素,注意和多维素组的差别,会输出30
3. 数组的常用操作
- arr.Length属性:数组中元素个数;
- arr.GetLength(n):获取数组arr第n维元素的个数;
- arr.Rank:获取数组arr的维数;
①克隆数组,就是复制一份新的
int[] arr = new int[] { 1, 2, 3, 4};
int[] arr2 = (int[])arr.Clone();
for (int i = 0; i < arr2.Length; i++)
{
Console.Write(arr2[i]);
}
4. ArrayList
命名空间:using System.Collections;
ArrayList就是传说中的动态数组,它可以动态的增加和减少元素,另外它可以存储任意个数和任意类型的元素。
属性
- Count属性是目前ArrayList包含的元素的数量,这个属性是只读的
- Capacity属性是目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。
方法
- Add(v):添加一个元素(参数v,任何类型)到当前列表的末尾
- AddRange方法用于添加一批元素到当前列表的末尾
- Remove方法用于删除一个元素,通过元素本身的引用来删除
- RemoveAt(i):方法用于删除一个元素,通过索引值(参数i)来删除
- RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除
- Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动
- InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
- Clear():方法用于清除现有所有的元素
- Contains(v):方法用来查找某个对象(参数v)在不在列表之中
- ToArray(Type t):这个方法把ArrayList的元素Copy到一个新的数组中,参数为Type类型
① 简单使用
ArrayList list = new ArrayList(); // 声明变量 list.Add(2);
list.Add("北京");
list.Add(new int[] { 2, 4, 6 });
list.Add("南京");
list.Add(3); foreach (var p in list) {
Console.Write(p.ToString() + " | "); // 输出:2 | 北京 | System.Int32[] | 南京 | 3 |
}
② ArrayList与数组转换
元素类型相同的转换
ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3); // 转换方式1:ToArray()
int[] list2 = (int[])list.ToArray(typeof(int)); // 转换方式2:CopyTo()
int[] list3 = new int[list.Count];
list.CopyTo(list3);
元素类型不同的转换
ArrayList arr = new ArrayList(){ "北京", 1}; //往数组中添加不同类型的元素
object[] arr2 = (object[])arr.ToArray(typeof(object)); //正确
string[] arr3 = (string[])arr.ToArray(typeof(string)); //错误
C#中数组与ArrayList的简单使用的更多相关文章
- C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- C#中数组、ArrayList和List<T>三者的发展历程
在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...
- C#中数组、ArrayList和List三者的区别 转
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- 【转载】 C#中数组、ArrayList和List三者的区别
原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ...
- 问题:C# List;结果:C#中数组、ArrayList和List三者的区别
C#中数组.ArrayList和List三者的区别 分类: [C#那些事] 2013-03-11 00:03 36533人阅读 评论(23) 收藏 举报 目录(?)[+] 在C#中数组,ArrayLi ...
- (转)C#中数组、ArrayList和List三者的区别
原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ...
- 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)
方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold&q ...
- C#中数组,ArrayList与List对象的区别
在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...
- C#.NET中数组、ArrayList和List三者的区别
数组在C#.NET中是最早出现的,在内存中是顺序连续存储的,所以它的索引速度非常快,赋值与修改元素也很简单:但是,也正因为数组是顺序连续存储的,在两个数据间插入数据是很不方便的,而且在声明数组的时候必 ...
随机推荐
- Docker -- 系统整洁之道 -- 1
在上文Docker – 系统整洁之道 – 0中已经对Docker是什么,安装Docker以及怎么运行一个简单的容器有了初步了解,这篇文章介绍Docker的一些命令和Docker镜像的使用及操作. 一些 ...
- FreeBSD是UNIX系统的重要分支,其命令与Linux大部分通用,少部分是其特有。
FreeBSD是UNIX系统的重要分支,其命令与Linux大部分通用,少部分是其特有. 1: man 在线查询 man ls2: ls 查看目录与档案 ls -la3: ln 建立链接文件 ln -f ...
- Vue常见面试题汇总
Vue框架常见面试题 1.active-class是哪个组件的属性?嵌套路由怎么定义? 答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么 ...
- 原生js模拟jquery中的addClass和removeClass方法
js代码: //添加类 function addClass(obj,className) { if(obj.className == '') { //如果没有class obj.className = ...
- 实现人脸识别性别之路---opencv
import cv2from make_imge import get_file_namefrom train_ph import Modelimport os IMAGE_SIZE = 128if ...
- 统计学习:《贝叶斯思维统计建模的Python学习法》中文PDF+英文PDF+代码
用数学工具解决实际问题仅有的要求可能就是懂一点概率知识和程序设计.而贝叶斯方法是一种常见的利用概率学知识去解决不确定性问题的数学方法,对于一个计算机专业的人士,应当熟悉其应用在诸如机器翻译,语音识别, ...
- Swift学习笔记(14)--方法
1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...
- 使用UltraEdit配置多行注释和取消多行注释
UltraEdit功能强大,使用方便,成为软件开发者必备的文档和代码编辑工具.有很多人也直接用它来写代码,如C/Java,脚本如:Perl/Tcl/JavaScript 等. 如果用来写代码,有一个不 ...
- 使用Microsoft excel 2007 进行数据分析---环境配置
使用Microsoft excel 2007 进行数据分析---环境配置 使用前须要安装SQL server 2008 data mining Add-ins for Microsoft excel ...
- Use PSO to find minimum in OpenCASCADE
Use PSO to find minimum in OpenCASCADE eryar@163.com Abstract. Starting from OCCT6.8.0 will include ...