第2章.数组和ArrayList
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的更多相关文章
- (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)
目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...
- C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- C# 数组,ArrayList与List对象的区别
在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...
- C#中数组、ArrayList和List<T>三者的发展历程
在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...
- 在Java中怎样把数组转换为ArrayList?
翻译自:How to Convert Array to ArrayList in Java? 本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在S ...
- Java学习笔记51:数组转ArrayList和ArrayList转数组技巧
ArrayList转数组: public class Test { public static void main(String[] args) { List<String> list = ...
- C#中数组,ArrayList与List对象的区别
在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...
- C# 数组、ArrayList、List、Dictionary的用法与区别
前言 在工作中经常遇到C#数组.ArrayList.List.Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍.于是抽空好好看了下他们的用法和比较,在这 ...
- Java基础知识二次学习--第五章 数组
第五章 数组 时间:2017年4月26日15:11:30~2017年4月26日15:15:54 章节:05章_01节 视频长度:09:30 内容:一维数组的内存分析 心得: Java中数组是引用类型 ...
随机推荐
- nodejs爬虫第一篇---> request、cheerio实现小爬虫
目标 抓取猫眼正在热映的电影页面的数据,使用的第三方模块 request.cheerio. 说明 有时候我们需要做一些项目或者demo,我们需要一些数据,我们就可以利用爬虫,爬取一些我们想要的数据.个 ...
- asp.net core 3.x 身份验证-1涉及到的概念
前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象.至于身份验证是啥?与授权有啥联系?就不介绍了,太啰嗦. ...
- 在CentOS8 上安装Python3
从centos开始入手学习linux.感觉安装python很费劲,之前centos6因为python2和python3兼容的问题一直无法彻底解决,python3一旦安装影响到python2,cento ...
- python学习(4)循环语句
循环语句主要有两个,一个是 while :一个是for in range() 以案例来说明: 写一个猜数字的游戏,正确的数字等于38.如果数字等于38,则提示正确,然后结束:如果数字大于38则提示大了 ...
- MySQL优化---主从复制
主机所有写的数据都会生成二进制SQL日志执行文件,从机只需要将SQL日志执行文件获取到,然后进行数据同步即可 一.MySQL环境搭建(一主一从相同操作) MySQL-master:192.168.33 ...
- VFP9.0的GDI+类的使用
GDI+你应该不会陌生吧,然而,在VFP里要使用这一技术,可不是一件容易的事,你得学习一大堆API函数.或许,一想到这,你已经望而却步了.不过,从现在起,这一技术不再是豪门旺族的专宠了,我们每一位Fo ...
- php基础编程-php连接mysql数据库-mysqli的简单使用
很多php小白在学习完php基础后,或多或少要接触到数据库的使用.而mysql数据库是你最好的选择,本文就mysql来为大家介绍php如何连接到数据库. PHP MySQLi = PHP MySQL ...
- jenkins 介绍 安装
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作, 旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是可扩展的持续集成.交付.部 ...
- HDU 1006 模拟
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 杭电-------2043密码(C语言写)
#include<stdio.h> #include<string.h> ]; ] = { '~','!','@','#','$','%','^' }; ] = { }; in ...