在游戏开发的时候, 经常需要创建和管理相关对象组, 比如服务器列表, 商城物品列表等等. 在从服务器拿到这些数据的时候, 首先需要将他们存放到一个数据集合里面, 然后对集合中的数据循环遍历进行处理.

之前学过的数据集合有数组, 可以用数组来存储这些数据. 但是采用数组作为数据集合是由弊端的, 比如数组初始化的时要指定长度, 长度是固定的, 不利于数据的动态扩展和删除. 今天学习一种专门用来数据存储和检索的类 -- 集合.

一.集合

在C#中, 集合是专门用于数据存储和检索的类. 与数组不同, 集合提供了一种灵活的数据处理方法, 处理的对象组可根据程序更改的需要动态的增长和收缩. 对于数据快速检索, 集合还可以为对象分配一个唯一的" 键", 通过此 "键" 可以直接将数据从集合中取出来.

集合是类, 因此必须声明新集合后, 才能往里面进行数据存储.

1.1 集合类型

集合分为两种类型: 非泛型集合与泛型集合.

使用非泛型集合需引入:System.Collections 命名空间。
使用泛型集合需引入:System.Collections.Generic 命名空间。

非泛型集合

泛型集合

1.2 动态数组 -- ArrayList

ArrayList 是一个特殊的数组, 可以通过添加和删除元素动态改变数组长度。它是一个类, 所以需要先创建对象, 通过对象来访问成员;

ArrayList 

方法:

ArrayList 的方法有很多,有些方法还有多个重载。 不仅是它,其他的集合类如 Stack, Queue, List等等也是如此, 所以最好是记住一些平时常用的,其他的方法都可以现查现用。

在 Vs 中将光标放在你想要查找的类上, 按 F12 就会跳转到该类的使用文档, 里面对该类的所有方法都有非常详细的描述。掌握这个技巧就可以哪里不会点哪里了;

例如 ArrayList

对集合的操作重点就是会调用各种方法, 所以今天的笔记就是整理一下这些集合类的常用方法, 掌握的话还是得多多动手敲代码。

链表

栈(先进后出)

队列 (先进先出)

字典 (键值对)

二.索引器

索引器允许类或结构的实例就像数组一样可以通过下标索引。 它类似于属性,不同之处在于它们的取值函数采用参数。 C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。

语法

[访问修饰符] 

练习: 定义一个Person类, 实现索引

// 定义一个Person 类

三.扩展

扩展, 顾名思义是给已经存在的规则再添加上你想要加的规则, 例如 :对一个 int类型的数组, 你想要让它自己实现排序的方法, 就可以给它加个扩展.

// 随便定义一个静态类, 在这个类里面定义扩展

=======================================================

思维导图

C# list集合 重复元素 索引_C#学习笔记12--集合/索引器/扩展相关推荐

  1. java中集合的模型特点_Java 学习笔记(十四)集合

    集合 在开发的时候,如果需要存储多个数据,可以使用数组,不过数据是固定长度的,如果需要存储可变长度的多个数据,可以使用集合.集合提供存储空间可变的存储类型,存储的容量可以实时改变 集合分类 Colle ...

  2. Python学习笔记:集合(set)

    Python学习笔记:集合(set) 1.集合概念 集合是互异元素的无序集合.类似于只有键没有值的字典. 2.创建集合 有两种方法创建集合:一个是利用set函数,一个是利用花括号创建集合字面量. 3. ...

  3. Python中索引的学习笔记

    1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...

  4. 《深度学习笔记》——listnumpy索引操作的学习笔记

    1 致谢 感谢网友粗面鱼丸提供的资料, 原文链接:https://www.cnblogs.com/subic/p/8710946.html 2 初始python中的索引操作 2.1 单次索引x[0:2 ...

  5. MongoDB学习笔记~对集合属性的操作

    $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$pop操作 ...

  6. NetLogo学习笔记3 —— 集合操作与生命游戏

    NetLogo学习笔记3 -- 集合操作与生命游戏 (这篇新知识点略多) 上一篇文章我们了解NetLogo模型的基本要素,学习了函数定义与ask语法.并编写了我们的第一个程序! 这一次,我们来编写一个 ...

  7. SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引 @邀月

    邀月 的数据库学习 http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html SQL Server 2008中SQL应用系列及BI ...

  8. 求差集(C语言)两个集合的差集定义如下:集合A、B的差集,由所有属于A但不属于B的元素构成。输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。

    [问题描述] 两个集合的差集定义如下: 集合A.B的差集,由所有属于A但不属于B的元素构成. 输入两个集合A.B,每个集合中元素都是自然数.求集合A.B的差集. [输入形式] 从标准输入先输入集合元素 ...

  9. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...

最新文章

  1. 如何让您的php也支持pthreads多线程
  2. AI能写出靠谱医学报告了,CVPR2021收录 | 腾讯医典出品
  3. php如果字符串有1 3 5,Day3-php 字符串1
  4. 渐进式web应用程序_如何在渐进式Web应用程序中添加到主屏幕
  5. 想在边缘运行计算机视觉程序?先来迎接挑战!
  6. Identity Server4学习系列四之用户名密码获得访问令牌
  7. fcm脑图像分割matlab,MATLAB程序:用FCM分割脑图像
  8. 二叉搜索树的第k个节点
  9. 用户计算机证书在哪里找,用户、计算机或服务的“证书”管理单元 怎么进?...
  10. 10分钟就能学会,Linux操作系统21个shell常用命令
  11. 高精度三维扫描仪用于运动鞋逆向建模
  12. 曲线运动与万有引力公式_高一物理曲线运动万有引力试题
  13. 【自动驾驶传感器融合系列】01自动驾驶中常用的传感器
  14. php 计费系统设计,仓储系统之计费模块设计
  15. cisco Switching-vlan
  16. CS61A fa2021 Composing Programs 2.8 Efficiency 效率
  17. 中国大学MOOC C语言程序设计(大连理工大学) 课后编程题 第十二周题解(个人向仅供参考)
  18. 计算机博士英文复试自我介绍,博士生复试英文自我介绍
  19. QQ游戏对对碰辅助程序
  20. COOX基础培训之PMT

热门文章

  1. sqlserver启用xm_cmdshell
  2. 词法分析(3)---DFA
  3. MSSQL的多层嵌套查询
  4. 数据可视化组队学习:《Task01 - Matplotlib初相识》笔记
  5. 【CyberSecurityLearning 42】日志记录规则
  6. 任务切换的方法——《x86汇编语言:从实模式到保护模式》读书笔记37
  7. 汇编语言出现的历史背景
  8. 【快乐水题】575. 分糖果
  9. HTTP VS RPC
  10. dijkstra+堆优化