c# 动态数组

C#中的数组是可以动态分配长度的,实现动态数组有以下几种途径,这里说的动态数组包括动态分配大小和动态增加数据.
先来看原始数组:
 int m = 5;
 int[] array = newint[m];
 array[0] = 2;
 label1.Text = array[0].ToString() + " + " +array.Length.ToString();
结果的输出自然是 2 + 5;
 
动态分配:
1: m++;
  array = newint[m];//相当于重新初始化,原来的值被冲掉了  
  label2.Text =array[0].ToString() + " + " + array.Length.ToString();
结果输出自然是 0 + 6;
2: m++;
  Array.Resize(ref array,m);
  label2.Text =array[0].ToString() + " + " + array.Length.ToString();
结果输出自然是 2 + 6;
3:再有就是通过ArrayList的方法
 
第1种方案适合能够事先能从某处读出来长度的情况;第2,3种方案最适合在事先不知道数据长度究竟有多少,只能来一个算一个的情况,个人感觉,这才是动态数组真正的用途,也就是能够随着数据的增加而自动扩容。
在这方面ArrayList毫无疑问是首选,能够真正实现这个功能.
ArrayList  al  =   new  ArrayList();
al.Add(
NewData ); // 单个添加
如果增加的是同一类型的数据,用Array.Resize()也是能够实现的:
if(产生了新数据)//增加个判断
{
      m++;//假设数组原来的长度是m
      Array.Resize(ref array,m);
      array[m] = NewData;
}
虽然有同样的效果,但本质上是有差异的.ArrayList是真正的在变长.而 System.Array.Resize这个泛型方法是 重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就 废弃!也就是说并不是在原先的基础上扩容,而是新建了一个.但是无论如何在表面上看来确实实现了我们想要的功能.
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值