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. WPF另类实现摄像头录像

    WPF中使用第三方控件来直接进行录像的控件没有找到(aforgenet好像不维护了?WPFMediaKit好像只能实现摄像头拍照.收费的控件没有使用,不做评论.) 通过百度(感谢:https://ww ...

  2. 8.HanLP实现--命名实体识别

    笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 8. 命名实体识别 8.1 概述 命名实体 文本中有一些描述实体的词汇.比如人名. ...

  3. Codeforces_799

    A.求两个时间比较一下. #include<bits/stdc++.h> using namespace std; int n,t,k,d; int main() { ios::sync_ ...

  4. 一口气说出 9种 分布式ID生成方式,面试官有点懵了

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 本文作者:程序员内点事 原文链接:https://mp.weix ...

  5. HDU 6599 I Love Palindrome String (回文树+hash)

    题意 找如下子串的个数: (l,r)是回文串,并且(l,(l+r)/2)也是回文串 思路 本来写了个回文树+dfs+hash,由于用了map所以T了 后来发现既然该子串和该子串的前半部分都是回文串,所 ...

  6. 《Python学习手册 第五版》 -第11章 赋值、表达式和打印

    上一章对Python的语句和语法已经进行了基本的说明,接下来就是每个章节的详细说明,本章的主要内容就是标题中涵盖的三点:赋值语句.表达式语句.打印语句 本章重点内容如下: 1.赋值语句 1)赋值语句的 ...

  7. WSL2+Docker部署RabbitMQ以及在Asp.net core 中使用RabbitMQ示例(1)

    本文主要在于最近因疫情不能外出,在家研究的一些技术积累. 主要用到的技术以及知识点: WSL 2 WSL 2+Docker Docker+RabbitMQ 在ASP.NET Core中使用Rabbit ...

  8. Go语言实现:【剑指offer】把二叉树打印成多行

    该题目来源于牛客网<剑指offer>专题. 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 需要分层,二维数组. Go语言实现: /** * Definition for ...

  9. 大文件切割(split)

    split提供两种方式对文件进行切割: 根据行数切割,通过-l参数指定需要切割的行数 根据大小切割,通过-b参数指定需要切割的大小 1.1 根据行数切割 如下以一个3.4G大小的日志文件做切割演示,每 ...

  10. jsessionid與cookie關係的理解

    本地測試地址為http://localhost/TEST/login.jsf 當瀏覽器打開cookie時,瀏覽器第一次與服務器建立連接,會創建一個session,並生成一個id即jsessionid, ...