数组的不足

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

一、集合结构

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. python爬虫下载-用Python爬虫下载整本小说
  2. Java之static
  3. 技术方案设计的方法论及案例分享
  4. 音视频技术开发周刊 73期
  5. 面试必胜的九大素质八大能力
  6. 物联卡查询流量_物联卡流量查询_python_API文档_开发指南_物联网无线连接服务 - 阿里云...
  7. 用etcd实现服务注册和发现
  8. 32位jdk最大内存_Java安装之JDK下载篇
  9. 数据库中间表插入乱序
  10. C语言基础第三次作业
  11. 页码太靠上怎么办_醉酒后难受怎么办?酸奶、解酒药都不靠谱,最实用的还是3个方法...
  12. C语言中进制转换与函数
  13. 如何将应用从Win7迁移到Win10 ?
  14. Android :安卓学习笔记之 Handler机制 的简单理解和使用
  15. 大学生数学竞赛辅导:Stolz定理和f(x)≡0
  16. ABAQUS软件实训(四):Mesh模块之六面体网格划分技巧
  17. 一键获取Windows锁屏壁纸
  18. 追求技术之美:云计算开发者的自我修养
  19. Missing parentheses in call to 'print'
  20. overlay的设计

热门文章

  1. 鼠标坏了怎么用键盘操作鼠标
  2. 玩3D游戏头晕怎么办?为什么会头晕?如何解决?
  3. Nlp SBD 文本断句 包含中文 和英文断句
  4. 2017年Go语言入门教程-徐培成-专题视频课程
  5. 一个口 光纤 两条线 交换机 上 光纤 两条线 双纤 单纤 尾纤 分光器 双纤 双纤转单纤 接 分光器
  6. 微信分享到朋友圈的链接,内容打开正常,但在微信中分享时封面缩略图图像和标题显示不出来?
  7. 手机信令数据怎么获得_论文推荐 | 基于手机信令数据的大规模通勤模式研究(2020-12-01)...
  8. 存了半年工资去旅游,结果公司不批假!
  9. 寻找复杂背景下的物体轮廓 (从禾路的博客园整理学习)
  10. 程序员女友在京东被领导“潜规则”,竟然不回绝:表明非单身会影响绩效