首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何创建一个不受长度限制的数组?

如何创建一个不受长度限制的数组?

作者头像
高一峰
修改2020-09-22 14:33:44
4.6K0
修改2020-09-22 14:33:44
举报
文章被收录于专栏:高渡号外高渡号外

如何创建一个不受长度限制的数组?

—— 新手编程1001问之C#编程基础

哈哈,如果你非要这样提问不可,我也不好说什么。真有不少新手提出这样的问题,我还是要说,这是个好问题,毕竟程序员是最具有创新精神的群体。

可是,计算机语言中,至少我知道的C系列的语言,比如C/C++、C#、Java等等,在定义数组的时候,规定数组的大小就是定长的。这一方面跟原创约定有关,同时,也因为创建数组的时候,需要一次性给它分配存储空间。

所以,数组这个特殊的数据类型,的确存在它的局限性:

  • 长度的定义:在数组创建时必须指定。
  • 长度的修改:在生命周期里不能修改。

那么,如果真的遇到(其实经常会遇到)一个序列类型的数据,但是,它的初始长度不确定,或者,使用过程中(也就是生命周期内)需要添加或者移除其中部分元素,这时候,我们那什么来拯救自己?

是的,没错,简言之,就是一个不受长度限制的数据序列类型成为了一个客观的需求。难道是语言的创始者没想到?咱们创新的机会来了?打住、打住。建议所有的新手们都不要这样思考问题,一定不是前浪没想到,而是后浪才开始。你多浪几下,就会看到你现在还没看到的东西。

哈哈,也不要说“我命由我不由天”好吧,没那么严重。当然,也不至于简单到能随便new一个出来的。你该做的,还是应该静下心来,把搜索引擎打开。

好了,为了节省大家的时间,这里,我就不绕弯子了,直接给大家推荐一个新的数据类型,它就是List列表。当然它的前身是ArrayList。(C#2.0以前)

List列表,微软官方称之为泛型集合。

关于泛型,我们今后有机会还会进一步探讨。这里我们暂不关注什么是泛型,我们现在需要重点关注的是它的使用特性。

1、如何创建一个List列表?

List<T> myList = new List<T>();
  • <>,表示它是一个数据序列,且有统一的类型;
  • T,是一个泛型的标识,它表示可以是任何类型,甚至是一个用户自定义的类;
  • List列表无需定义长度;
  • List的长度是可变的。

2、如何给一个List列表添加数据?

List<int> myList = new List<int>();
//为myList 列表添加1、2、3、4、5这五个整数类型的元素:
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);
myList.Add(5);

以上为myList添加了5个元素。

3、如何获得一个List列表的长度?

int mycount = myList.Count;

List列表的长度,就是列表中拥有的元素个数,即是List的Count属性。

4、如何移除List列表中的元素?

(1)、删除一个值

语法:List. Remove(T item)

案例:myList.Remove("zhangsan");

(2)、删除下标(即索引)为index的元素

语法:List. RemoveAt(int index);

案例:myList.RemoveAt(0);

(3)、从下标(即索引)index开始,删除count个元素

语法:List. RemoveRange(int index, int count)

案例:myList.RemoveRange(3, 2);

5、如何遍历List中元素?

//遍历列表元素
foreach (var item in myList)
{
    //控制台循环输出显示列表元素
    Console.WriteLine(item);
}
//遍历(迭代)列表元素
for (var i = 0; i < myList.Count; i++)
{
    //控制台循环输出显示列表元素
    Console.WriteLine(myList[i]);
}
//Count 属性,用于获取数组中当前元素的总数量

6、List列表的常用操作函数

Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。

Add( ) 在List中添加一个对象的公有方法

AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素

BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.

Clear( ) 在List内移除所有元素

Contains( ) 测试一个元素是否在List内

CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内

Exists( ) 测试一个元素是否在List内

Find( ) 查找并返回List内的出现的第一个匹配元素

FindAll( ) 查找并返回List内的所有匹配元素

GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器

Getrange( ) 拷贝指定范围的元素到新的List内

IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引

Insert( ) 在List内插入一个元素

InsertRange( ) 在List内插入一组元素

LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引

Remove( ) 移除与指定元素匹配的第一个元素

RemoveAt( ) 移除指定索引的元素

RemoveRange( ) 移除指定范围的元素

Reverse( ) 反转List内元素的顺序

Sort( ) 对List内的元素进行排序

ToArray( ) 把List内的元素拷贝到一个新的数组内

trimToSize( ) 将容量设置为List中元素的实际数目

好了,有了List列表这个利器,创建或使用一个不定长的“数组”,还需要着急吗?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何创建一个不受长度限制的数组?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档