c# 为什么要使用Array、ArrayList、List?
c#也是一直在进化的,从数组进化到ArrayList,再进化到泛型就是个例子。
static void Main(string[] args)
{
//数组的增删改查
//定义数组
int[] Numbers = new int[] { ,,,, };
Console.WriteLine("原数组为:");
StringBuilder sb = new StringBuilder();
foreach (var item in Numbers)
{
sb.Append(item+",");
}
Console.WriteLine(sb.ToString());
Console.WriteLine("现在在0位置插入9");
Add(Numbers, , );
Console.WriteLine("现在在1位置插入9");
Add(Numbers, , );
Console.WriteLine("现在在2位置插入9");
Add(Numbers, , );
Console.WriteLine("现在在3位置插入9");
Add(Numbers, , );
Console.WriteLine("现在在4位置插入9");
Add(Numbers, , );
Console.WriteLine("现在在5位置插入9");
Add(Numbers, , );
Console.WriteLine("数组不能动态改变,所以用ArrayList");
ArrayList arrayInt = new ArrayList();
for (int i = ; i < ; i++)
{
arrayInt.Add(i+);
}
Console.WriteLine("现在在ArrayList中的3位置增加9");
arrayInt.Insert(,);
StringBuilder sbArray = new StringBuilder();
foreach (var item in arrayInt)
{
sbArray.Append(item+",");
}
Console.WriteLine(sbArray.ToString());
Console.WriteLine("因为ArrayList中都转换为object,有性能消耗,因此微软引入了泛型");
List<int> listInt = new List<int>();
for (int i = ; i < ; i++)
{
listInt.Add(i+);
}
Console.WriteLine("现在在List中的3位置增加9");
listInt.Insert(,);
StringBuilder sbList = new StringBuilder();
foreach (var item in listInt)
{
sbList.Append(item + ",");
}
Console.WriteLine(sbList.ToString());
Console.ReadKey(); }
/// <summary>
/// 数组的添加
/// </summary>
/// <param name="numbers">原始数组</param>
/// <param name="i">要添加的位置从0开始</param>
/// <param name="k">要添加的值</param>
public static void Add(int[] numbers,int i,int k)
{
if (i<&&i>numbers.Length)
{
Console.WriteLine($"要插入的位置只能0到{numbers.Length}之间"); }else
{
//因为数组定义就不能更改,所以必须把原数组拷贝到新数组中
int[] newArray = new int[numbers.Length+];
int m = ; for (int j = ; j < numbers.Length; j++)
{
if (j!=i)
{
//添加到新数组中
newArray[m] = numbers[j];
m++;
}
else if(j==i)
{
newArray[j] = k;
newArray[j+]= numbers[j];
m = j + ;
} }
//如果要插入的位置就是原数组的最大长度+1,则直接赋值
if (i == numbers.Length)
{
newArray[i] = k;
}
StringBuilder sb = new StringBuilder();
foreach (var item in newArray)
{
sb.Append(item+",");
}
Console.WriteLine(sb.ToString());
}
}
c# 为什么要使用Array、ArrayList、List?的更多相关文章
- 类 Array Arraylist List Hashtable Dictionary
总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashT ...
- c#中Array,ArrayList 与List<T>的区别、共性与转换
本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...
- Array,ArrayList、List<T>、HashSet<T>、LinkedList<T>与Dictionary<K,V>
Array: 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. 但是数组存在一些不足的地方.在数组的两个数据间插入数据是很麻烦的,而且在声明数组的时候 ...
- 解析C#中[],List,Array,ArrayList的区别及应用
[] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...
- .net中的Array,ArrayList和List
Array:任意类型,定长 ArrayList:任意类型,不定长 List:特定类型,不定长 Array和ArrayList是通过存储object类型实现可以存储任意类型数据,使用时需要拆箱和装箱
- [置顶] Array ArrayList LinkList的区别剖析
这是一个面试中我们经常被问到的问题 Array.ArrayList.LinkList之间的区别:Array.ArrayList.LinkList均属于泛型的范畴,都用来存放元素,主要区别是Array是 ...
- Array,ArrayList 和 List<T>的选择和性能比较.
Array Class Provides methods for creating, manipulating, searching, and sorting arrays, thereby serv ...
- C# 中的集合(Array/ArrayList/List<T>/HashTable/Dictionary)
int [] numbers = new int[5]; // 长度为5,元素类型为 int.string[,] names = new string[5,4]; // 5*4 的二维数组byte[] ...
- Array,ArrayList,泛型List比较
在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...
- C# 中的集合(Array/ArrayList/List<T>/HashTable/Dictionary)
int [] numbers = new int[5]; // 长度为5,元素类型为 int. string[,] names = new string[5,4]; // 5*4 的二维数组 byte ...
随机推荐
- ASP.NET Core 1.0 Configuration 配置管理
documentation: https://docs.asp.net/en/latest/fundamentals/configuration.html github: https://github ...
- 一口一口吃掉Hexo(五)
如果你想得到更好的阅读效果,请访问我的个人网站 ,版权所有,未经许可不得转载! 通过前四节的内容,相信你已经能够在你的虚拟主机上成功部署网站,并且能够通过你自己的域名访问你的网站了,接下来要做的就是日 ...
- Vue笔记:在项目中使用 SCSS
背景概述 1. CSS预处理器 css预处理器定义了一种新的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代 ...
- spring boot 与 thymeleaf (4): 基本对象、工具类对象
如果在前台, 我需要获取session中的信息, 或者需要获取url中的参数信息, 是不是需要在后台手动处理好, 然后放到Model中去, 在前台通过${}来取呢? 当然, 这种方式, 是可以的, 但 ...
- Solidity的delete操作
Solidity中有个特殊的操作符delete用于释放空间,因为区块链技术做为一种公用资源,为避免大家滥用.且鼓励主动对空间的回收,释放空间将会返还一些gas. delete关键字的作用是对某个类型值 ...
- spring scope 作用域
转自:http://www.cnblogs.com/qq78292959/p/3716827.html 今天研究了一下scope的作用域.默认是单例模式,即scope="singleton& ...
- GoogLeNetv3 论文研读笔记
Rethinking the Inception Architecture for Computer Vision 原文链接 摘要 卷积网络是目前最新的计算机视觉解决方案的核心,对于大多数任务而言,虽 ...
- 并发编程之 Exchanger 源码分析
前言 JUC 包中除了 CountDownLatch, CyclicBarrier, Semaphore, 还有一个重要的工具,只不过相对而言使用的不多,什么呢? Exchange -- 交换器.用于 ...
- [转]关于Linux安装mysql默认配置文件位置
本文转自:https://blog.csdn.net/smile___you/article/details/54409073 在linux下面安装mysql如果在/etc下面没有存在my.cnf配置 ...
- Docker镜像的获取和推送
查找镜像 查找镜像的方法有主要有两种,一种是在Docker Hub官方网站查找,网址为https://hub.docker.com/ 另一种方法是在命令行界面中通过docker serach < ...