2.1 数组基本概念

数组是可索引的数据的集合。数组既可以是内置的类型,也可以是用户自定义的类型。事实上,把数组数据称为对象大概是最简便的方式。C#中数组实际上就是对象的本身,因为它们都源于System.Array类的一个声明实例,所以在使用数组时也可以使用此类的所有方法和属性。

2.1.1 数组的声明和初始化

namespace test
{
class Program
{
static void Main(string[] args)
{
//实例化数组需要确定数组大小 此处预留了5个字符串的内存空间
string[] names = new string[]; //也可以采用初始化列表的方式来实现 无需指定元素个数
int[] numbers = new int[] { , , , , };
}
}
}

2.1.2 数组元素的设置和存取访问

namespace test
{
class Program
{
static void Main(string[] args)
{
string[] nNames = new string[]; //存储数组元素既可以采用直接存取访问的方法也可以通过调用Array类的SetValue方法 //直接存取方式通过赋值语句左侧的索引来引用数组位置
nNames[] = "Raymond"; //SetValue方法会取走两个参数 一个是索引数另一个是元素值
nNames.SetValue("Raymond", ); //数组元素访问原理同上
string s1 = nNames[];
string s2 = nNames.GetValue() as string;
}
}
}

2.1.3 取回数组元数据的方法和属性

namespace test
{
class Program
{
static void Main(string[] args)
{
//Array类为取回数组元素数据提供了几种属性:
//Length:返回数组所有维数内元素的总数量
//GetLength:返回数组指定维数内元素的数量
//Rank:返回数组的维数
//GetType:返回当前数组实例的类型 int[] numbers = new int[] { , , , , };
Type arrayType = numbers.GetType();
if (arrayType.IsArray)
{
Console.WriteLine("The array type is: {0}", arrayType);
}
else
{
Console.WriteLine("Not an array");
}
Console.Read();
}
}
}

2.1.4 多维数组

参考链接:https://www.runoob.com/csharp/csharp-multi-dimensional-arrays.html

2.1.5 参数数组

参考链接:https://www.runoob.com/csharp/csharp-param-arrays.html

2.1.6 锯齿状数组

参考链接:https://www.runoob.com/csharp/csharp-jagged-arrays.html

2.2 ArrayList类

当无法提前知道数组的大小或者在程序运行期间数组的大小可能会发生改变的时候,静态数组就不是很适用了。这类问题的一种解决方案就是当数组超出存储空间的时候使用能够自动调整自身大小的数组类型。这种数组被称为是ArrayList。它是.Net框架库中System.Collections命名空间的内容。

ArrayList对象拥有可存储数组大小尺寸的Capacity属性。该属性的初始值为16。当AarrayList中元素的数量达到此界限值时,Capacity属性就会为ArrayList的存储空间另外增加16个元素。在数组内元素数量有可能扩大或缩小的情况下使用ArrayList会比用带标准数组的ReDim Preserver更加有效。

2.2.1 ArrayList类的成员

ArrayList类常用方法和属性:

Add( ):向ArrayList添加一个元素。

AddRange( ):在ArrayList末尾处添加群集的元素。

Capacity( ):存储ArrayList所能包的含元素的数量。

Clear( ):从ArrayList中移除全部元素。

Contains( ):确定指定的对象在ArrayList内。

Copy To( ):把ArrayList或其中的某一段复制给一个数组。

Count( ):返回ArrayList中当前元素的数量。

GetEnumerator( ):返回迭代ArrayList得到计数器。

GetRange( ):返回ArrayList的子集作为ArrayList。

IndexOf( ):返回指定数据项首次出现的索引。

Insert( ):在ArrayList的指定索引处插入一个元素。

InsertRange( ):从ArrayList指定索引处开始插入群集的元素。

Item( ):在指定索引处获取或者设置一个元素。

Remove( ):移除指定数据项的首次出现。

RemoveAt( ):在指定索引处移除一个元素。

Reverse( ):对ArrayList中元素的顺序进行反转。

Sort( ):对ArrayList中的元素按照阿拉伯字母表顺序进行排序。

ToArray( ):把ArrayList的元素复制给一个数组。

TrimToSize( ):为ArrayList中元素数量设置ArrayList的容量。

第2章.数组和ArrayList的更多相关文章

  1. (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

    目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...

  2. C#中数组、ArrayList和List三者的区别

    在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...

  3. C# 数组,ArrayList与List对象的区别

    在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...

  4. C#中数组、ArrayList和List<T>三者的发展历程

    在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...

  5. 在Java中怎样把数组转换为ArrayList?

    翻译自:How to Convert Array to ArrayList in Java? 本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在S ...

  6. Java学习笔记51:数组转ArrayList和ArrayList转数组技巧

    ArrayList转数组: public class Test { public static void main(String[] args) { List<String> list = ...

  7. C#中数组,ArrayList与List对象的区别

    在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...

  8. C# 数组、ArrayList、List、Dictionary的用法与区别

    前言 在工作中经常遇到C#数组.ArrayList.List.Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍.于是抽空好好看了下他们的用法和比较,在这 ...

  9. Java基础知识二次学习--第五章 数组

    第五章 数组 时间:2017年4月26日15:11:30~2017年4月26日15:15:54 章节:05章_01节  视频长度:09:30 内容:一维数组的内存分析 心得: Java中数组是引用类型 ...

随机推荐

  1. CSS 故障艺术

    本文的主题是 Glitch Art,故障艺术. 什么是故障艺术?我们熟知的抖音的 LOGO 正是故障艺术其中一种表现形式.它有一种魔幻的感觉,看起来具有闪烁.震动的效果,很吸引人眼球. 故障艺术它模拟 ...

  2. JDBC——CreateStatement和PrepareStatement作用区别

    本文主要讲了PrepareStatement和CreateStatement的作用区别,大家可以一起学习!走后端的小伙伴都会必修JDBC,在前段时间作者实训期间,看到老师举例的时候用了CreateSt ...

  3. Django自动化测试平台项目案例

    引言 在项目组待了近半年时间,根据自己的感受和体验,做了一个辅助测试的工具(数据预报平台),主要目的是针对目前项目接口文档缺失,自动化预报脚本无法可视化,资源循环利用,统一管理化. 业务背景 我们项目 ...

  4. DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  5. PAT_B_PRAC_1003养兔子

    题目描述 一只成熟的兔子每天能产下一胎兔子.每只小兔子的成熟期是一天. 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子. 输入描述: 测试数据包括多组,每组一行,为整数n(1≤n≤90). ...

  6. 闲谈一下,ES3、ES4、ES5、ES6 分别是什么

    上图按照时间顺序说明了JavaScript.JScript和ECMAScript的发展. 显示在网景工作的Brendan Eich临危受命,用十天时间设计出LiveScript的第一个版本.临时发布前 ...

  7. Codeforces 1087B Div Times Mod(数学+暴力)

    题意: 求(x div k) * (x mod k) = n的最小解x,保证有解 1<=n<=1e6, k<=1000,1s 思路: 注意到k的范围是1e3, 1<=x mod ...

  8. java14带参的方法

    public class jh_01_如何使用带参数的方法31 { public static void main(String[] args) { // 创建对象 ZhaZhiJi zzj = ne ...

  9. 《剑指Offer》第二章(一)题3-8

    为春招实习做准备,记录一下<剑指Offer>里面的面试题 第二章 面试题3:数组之中的重复数字. 这个题吧,虽然不难,但是不知道为什么就是看了很久,可能很久没有做算法题了.最后面一句话说的 ...

  10. 视觉光盘,只有我可以贴全世界唯一,Windows上最高级的DOCKER客户端数字, 夜晚点击一个都没有,值班的小编辛苦了

    继上一篇视觉光盘,只有我可以贴全世界唯一,你永远截不到的图片(小编请用人性化语言解释移出首页) 合体了 晚上的小编, 呆了吗? 我看到了少于150字的随笔不允许发布到网站首页 我决定了用我专业的龟式输 ...