数组的不足

我们在使用数组管理数据的时候,是需要预先知道数组的长度的。但是在我们实际的开发过程中,很多数据往往无法事先知道一共有多少,在面对这些数据的时候,就无法使用数组来进行管理了。

一、集合结构

C#中提供了一系列特殊功能的类,这些类可以存储任意类型的对象,并且长度是可变的,他们统称为集合。

在 C#编程语言中,集合结构有两种:泛型集合,非泛型集合。

泛型集合:只能存储固定类型的对象的一种集合。

要使用泛型集合,我们必须引入对应的命名空间:

System.Collections.Generic

二、List<T>介绍

List<T>是一个 C#内置的一个类,是类我们就可以实例化出对象,本质和数组一样,因为 List<T>这个类的内部其实是维护了一个数组。

但是 List<T>比数组灵活,这个类封装了很多方便我们操作这个内部数组的各种方法,我们可以方便的对数据进行增加,删除,修改等操作,且 List<T>的长度是可以动态改变的,在实例化 List<T>类型对象时,不需要指定长度。

三、List<T>基本使用

1.创建泛型集合
①首先引入命名空间:using System.Collections.Generic;
②List<类型> 集合名 = new List<类型>();

2.集合数据操作

①增加数据
集合名.Add(Value) //往集合中添加数据;
往集合中添加,数据会不断的添加到集合中,形成一种类似于排队的效果。

②查询数据
集合名[索引] //取出指定索引位置的数据;
List<T>的索引和数组一样,也是从 0 开始;
集合的长度可以通过“集合名.Count”这个属性来取得;

③删除数据
集合名.RemoveAt(索引) //删除指定索引位置的数据;
该索引位置的数据被删除后,该索引后面的数据的索引会自动被调整;

④修改数据
集合名[索引] = 新值; //给指定索引的的数据重新赋值;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;namespace one
{class Program{static void Main(string[] args){//实例化一个集合List<int> num = new List<int>();num.Add(3);//往list里添加数据,类似于排队num.Add(2);num.Add(1);Console.WriteLine(num[0]);//查询元素,索引从0开始for (int i = 0; i < num.Count; i++)//循环访问{Console.WriteLine(num[i]);}num.Remove(2);//删除索引为2的值num[1] = 100;//修改数据}}
}

四、List<T>管理对象

直接上代码了。。。

主程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;namespace one
{class Program{static void Main(string[] args){//武器集合的定义List<Weapon> werpons = new List<Weapon>();//实例化一些武器Weapon item = new Weapon(1, "长虹剑", 100);werpons.Add(item);werpons.Add(new Weapon(2, "冰魄剑", 99));werpons.Add(new Weapon(2, "旋风剑", 98));werpons.Add(new Weapon(2, "奔雷剑", 97));//删除元素werpons.RemoveAt(1);//根据索引删除for(int i=0;i<werpons.Count;i++)//根据名字删除{if (werpons[i].Name == "旋风剑")werpons.Remove(werpons[i]);}for (int i = 0; i < werpons.Count; i++)//查询显示list元素{Console.WriteLine(werpons[i]);}}}
}

Weapon类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace one
{class Weapon{private int id;private string name;private int attack;public int Id{get { return id; }set { id = value; }}public string Name{get { return name; }set { name = value; }}public int Attack{get { return attack; }set { attack = value; }}public Weapon(int id,string name,int attack){this.id = id;this.name = name;this.attack = attack;}public override string ToString(){return string.Format("id:{0}-name:{1}-attack:{2}", id, name, attack);}}
}

C#:List泛型集合相关推荐

  1. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较

    1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...

  2. C#读取数据库返回泛型集合 把DataSet类型转换为ListT泛型集合

    /// <summary>/// 获取UserInfo泛型集合/// </summary>/// <param name="connStr">数 ...

  3. c#3.0加入的一些新特性——泛型集合

    c#3.0加入的一些新特性 1.泛型集合 2.隐式类型 3.自动实现属性 3.匿名方法 4.扩展方法 5.Lambda表达式 1.泛型集合 在.NET2.0中没有泛型集合定义集合用ArrayList定 ...

  4. C#泛型集合之Dictionaryk, v使用技巧

    1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value) ...

  5. List泛型集合总结(一)

    为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须 ...

  6. java 泛型集合 json_将泛型集合转换成分页json数据

    [java]代码库package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfact ...

  7. Dictionary泛型集合

    文章目录 1 Dictionary 1 Dictionary<K, V> 1.1 Dictionary<K, V>简介 关于Dictionary<K, V>泛型集合 ...

  8. C#泛型-泛型集合DictionaryK,V

    在System.Collections.Generic命名空间中,与ArrayList相对应的泛型集合是List<T>,与 HashTable相对应的泛型集合是Dictionary< ...

  9. C#中的集合、哈希表、泛型集合、字典

    集合ArrayList 集合:集合可以看做是数组,可以将其看成"长度可变,具有很多方法的数组".使用ArrayList,首先需要导入命名空间using.system.collect ...

  10. C#中的泛型和泛型集合

    泛型 泛型引入了一个概念:类型参数.通过使用类型参数(T)减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,他的最常见应用就是创建集合类,可以约束集合类中 ...

最新文章

  1. 基础 —— ip地址与子网掩码的认识
  2. 多线程:AQS源码分析
  3. 我的ASP.NET AJAX控件——PopupNotificationExtender:实现OWA或Messenger样式的信息提示窗口...
  4. IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构
  5. java设计连连看心得_基于Java的连连看游戏的设计与实现
  6. 感谢那些打赏赞助过我的人
  7. plc ge c语言编程,GE PLC编程软件是什么
  8. c# hdf5 写string_关于C#中读取HDF4文件数据的说明
  9. 直方图规定化python+opencv实现
  10. 新版虚拟服务器,新版tplink路由器虚拟服务器(端口映射)设置教程
  11. 吊打面试官了解一下?2021年字节跳动春招面试题详解(附详细答案)
  12. 你的伙伴对你最大会话_TeamViewer许可证对您与伙伴的最大会话有所限制解决办法...
  13. 保研夏令营面试、考研复试自我介绍、个人展示模板与撰写注意事项
  14. 摩托罗拉Android系统,摩托罗拉Droid官方Android 2.2系统详细功能展示
  15. 微信小程序之关注公众号
  16. VScode常用的快捷键
  17. 枯燥的寒假生活(一) python爬虫模拟登录whu老教务系统获取期末考试成绩(已失效 , 老教务系统增加了新的反爬, 老教务系统已停用)
  18. 解决js newDate()苹果手机日期格式显示NaN
  19. python音频降噪处理_Python | 简单的扩音,音频去噪,静音剪切
  20. Java工程师资格证书

热门文章

  1. “钢铁大王”卡耐基:一步一个脚印的职场人
  2. 小组件打不开-完美解决
  3. YOLO数据格式说明与转换
  4. Nvidia AGX Xavier Jetson 开机配置
  5. Android画图方式
  6. Codeforces Round #614 (Div. 1) C.Xenon's Attack on the Gangs(树形dp)
  7. 苹果 Mac Big Sur 如何更改锁屏时间?
  8. 百融云创被传赴港IPO急辟谣 旗下信贷业务存众多质疑
  9. 股票数据API接口文档说明
  10. oracle数据块的大小设置,Oracle数据块的大小