第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中数组是引用类型 ...
随机推荐
- NetModular 新年第一更以及升级指南(打造简单易用的.Net Core模块化快速开发框架~)
先给大家拜个晚年,祝大家身体健康,远离肺炎~ NetModular开源已有一年,在这一年收到了很多建议,框架也变得越来越完善.这次更新包括了从去年年尾到现在所做的更改,感觉更改的内容还是蛮多的,所以记 ...
- webdriver高级应用 -更改一个对象界面的属性值
#-*- coding=utf-8 -*- #更改一个对象界面的属性值 from selenium import webdriver import unittest def addAttribute( ...
- HDU_1495_模拟
http://acm.split.hdu.edu.cn/showproblem.php?pid=1495 自己用模拟写的,先除以三个数的最大公约数,弱可乐为奇数,则无解,然后开始模拟. 利用大杯子和小 ...
- .NET异步程序设计之任务并行库
目录 1.简介 2.Parallel类 2.0 Parallel类简介 2.1 Parallel.For() 2.2 Parallel.ForEach() 2.3 Parallel.Invoke() ...
- JAVA全栈工程师学习线路(建议收藏)
互联网技术,更新迭代迅速,用日新月异来说也不为过,所以,面对这这种大环境,对于码农尤其是那些对于初入职场的新手来说,该如何自我学习升级,往方向发展,这一点是大家都经常困惑的. 大部分人,刚开始学习的J ...
- 《Head first设计模式》学习笔记
1. 单例模式 2. 工厂模式 3. 抽象工厂 4. 策略模式 5. 观察者模式 6. 装饰者模式 7. 命令模式 8. 适配器模式 9. 外观模式 10. 模版方法模式 11. 迭代器模式 设计模式 ...
- javascript检测客户端环境是否是pc端
//isPC(): 检测客户端环境是否是pc端 function isPC(){ let userAgent = navigator.userAgent; let agents = ["An ...
- apache 负载均衡
此次使用mod_proxy的方式来实现的,因为在Apache2以上的版本中已经集成了,因此不需要再另行安装和配置了. 只需要把注释去掉即可,去掉以下模块的注释: LoadModule proxy_mo ...
- Linux 性能分析 工具命令
背景知识:具备背景知识是分析性能问题时需要了解的.比如硬件 cache:再比如操作系统内核.应用程序的行为细节往往是和这些东西互相牵扯的,这些底层的东西会以意想不到的方式影响应用程序的性能,比如某些程 ...
- 管理 使用 FastDFS
启动管理tracker: 1. 启动文件+配置文件+命令 /usr/bin/fdfs_trackerd <config_file> [start | stop | restart] 举例: ...