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 ...
随机推荐
- 从学CodeSmith谈程序员学习方法
一直觉得CodeSmith是个好东西,最近正好有点时间来研究下,其实以前也想学习怎么用,在博客园搜一下有很多介绍CodeSmith的文章,我就收藏过一个写得很详细的http://terrylee.cn ...
- VMWare Workstation 11的安装
不多说,直接上干货! 说白了 VMWare Workstation是收费的! VMware Player 和 VirtualBox是免费的! 虚拟机软件可让你在一个操作系统上直接运行的多个不同的虚 ...
- 《Netty权威指南》目录
一.基础篇 走进Java NIO 1. Java 的 I/O 演进之路:https://www.cnblogs.com/zengzhihua/p/9930652.html 2. NIO 入门:http ...
- ptmalloc总结
内存管理的一般方法 C 风格的内存管理程序主要实现 malloc()和 free()函数. 内存池是一种半内存管理方法.Apache 使用了池式内存(pooled memory),将其连接拆分为各个阶 ...
- 复刻smartbits的国产网络测试工具minismb-如何测试路由器
复刻smartbits的国产网络性能测试工具minismb,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数 ...
- MySQL中的三中循环 while 、 loop 、repeat 求 1~n 的和
-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和/* while循环语法:while 条件 DO 循环体 ...
- sqlserver清除缓存(转载)
sqlserver清除缓存,记录查询时间 1 2 3 4 5 6 7 8 9 10 11 12 --1. 将当前数据库的全部脏页写入磁盘.“脏页”是已输入缓存区高速缓存且已修改但尚未写入磁盘的数据 ...
- 关于__int64的使用!
关于__int64的使用! 类型 long long __int64 intmax_t 格式 %lld %I64d %I64d 在Dev C++中,三种类型均需用%I64d格式输出 ,c语言中int ...
- 一个人的旅行(hdu2066)Dijkstra算法模版
一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- PageHelper的使用方法
Mybatis分页组件Mybatis-PageHelper使用流程 只需要两步即可: 1.添加依赖 <!--PageHelper--> <dependency> <gro ...