1.  锯齿数组:锯齿数组就是数组的数组。例如:
Int[] a=new int[][]{
         New int[]{1,1,1};
          New int[]{23,12};
}

2.Out与ref:将数组作为参数传递时,在调用函数之前不需要初始化out参数,但调用的函数必须在返回前分配数组类型。而且,ref参数必须在函数调用之前分配。

3. 枚举数(enumerator):

它是一个对象,可以通过它对集合项进行便利。枚举数只能读取但不能改变集合的至。在实例化后,会被放在集合第一个元素之前。如果不调用movenexe就直接使用current访问的话会出错。当枚举数到达集合的末尾时,会停留在集合的最后一个元素后面,并返回假。如果此时继续使用current也会出错。

主要方法属性:

  • current返回集合中的当前对象;
  • Movenext将枚举项后移一项;
  • Reset将枚举数移到初始位置。

4.几种常用的集合:

A.Arraylisy:使用add,remove等对元素进行操作。

View Code

:public static void arraylist1()//arraylist的使用
        {
            ArrayList arr = new ArrayList();
            for (int i = 1; i <=5; i++)
                arr.Add(i.ToString());
            enumerator(arr);
            arr.Remove(arr[6]);
            enumerator(arr);
        }

public static void enumerator()//使用枚举数遍历arraylist集合
        {
            ArrayList arr = new ArrayList();
            arr.Add("hello");
            arr.Add("world");
            arr.Add("peace");
            IEnumerator en = arr.GetEnumerator();
            while (en.MoveNext())
                Console.WriteLine(en.Current);
            Console.ReadLine();
        }

B.Stack:是一种后进先出结构。有push。Pop。peek三种方法。

View Code

protected static void stack()//stack的使用

{
            Stack stk = new Stack();
            for (int i = 1; i <= 5; i++)
            stk.Push(i.ToString());
            enumerator(stk );
            stk.Pop();
            enumerator(stk );
        }

protected static void enumerator(Stack arr)//使用枚举数遍历stack集合
        {
            IEnumerator en = arr.GetEnumerator();
            while (en.MoveNext())
                Console.WriteLine(en.Current);
            Console.WriteLine("************");
        }

C.Hashtable:这是一种键值对集合。该集合与前面的两种集合不太一样,我写了段简单代码试了一下,发现了一下几点:

首先他得到的并不是原来输入的顺序,而是进行散列后的值;

还有使用枚举数的时候不再是Ienumerator,而是IdictionaryEnumerator;

最后,在使用枚举数读取值的时候不再是en.current,而是en.value。

View Code

protected static void hashtable()//hashtable的使用

{
            Hashtable ht = new Hashtable();
            for (int i = 1; i <= 5; i++)
                ht.Add( "num"+i.ToString (),i.ToString());
            enumerator(ht);
            ht.Remove("num3");
            enumerator(ht);
        }

protected static void enumerator(Hashtable arr)//使用枚举数遍历hashtable集合
        {
            IDictionaryEnumerator en = arr.GetEnumerator();
            while (en.MoveNext())
            Console.Write(en.Value );
            Console.WriteLine("************");
        }

D.Bitarray:一组真假值的集合。遍历的方法与arraylist以及stack相同。

要注意以下几点:

首先bitarray实例化时必须声明其长度;

其次,为其添加元素时用的方法是set;

最后,遍历时使用的枚举数仍未Ienumerator。

View Code

protected static void bitarray()//bitarray的使用
        {
            BitArray ba = new BitArray(5);
            for (int i = 0; i <= 4; i++)
            ba.Set(i, i % 2 == 0);
            enumerator(ba);
        }

protected static void enumerator(BitArray arr)//使用枚举数遍历bitarray集合
        {
            IEnumerator en = arr.GetEnumerator();
            while (en.MoveNext())
            Console.Write(en.Current );
            Console.WriteLine("************");
        }

E.Sortedlist:这种用法和hashtable与arraylist有点像。

首先,添加元素用的是ADD方法,添加的是键值对;

其次,遍历时使用的枚举数和Hahstable比较像。读取的时候既可以根据键值读取,也可以根据索引值读取。

View Code

 protected static void sortedlist()
        {
            SortedList sl = new SortedList();
            for (int i = 0; i < 5; i++)
                sl.Add("num" + i.ToString(), i.ToString());
            enumerator(sl);
        }

protected static void enumerator(SortedList arr)//使用枚举数遍历hashtable集合
        {
            IDictionaryEnumerator en = arr.GetEnumerator();
            while (en.MoveNext())
            Console.Write(en.Value);
            Console.WriteLine(arr["num2"]);
            Console.WriteLine(arr.GetByIndex(2));
            Console.WriteLine("************");
        }

F:queue这是一种先进先出队列结构。入队方法为enqueque ,出队方法为dequeque。枚举数遍历方式使用Ienumerator,

View Code

protected static void queue()

{
            Queue q = new Queue();
            for (int i = 0; i < 5; i++)
            q.Enqueue(i.ToString());
            enumerator(q );
            q.Dequeue();
            enumerator(q);
        }

protected static void enumerator(Queue q)//使用枚举数遍历queue集合
        {
            IEnumerator en = q.GetEnumerator();
            while (en.MoveNext()){
            Console.Write(en.Current);
            Console.WriteLine();}
        }

转载于:https://www.cnblogs.com/janes/archive/2009/03/17/1414679.html

C#.net技术内幕04-集合相关推荐

  1. mysql桦仔_Microsoft SQL Server 2005技术内幕:T-SQL查询笔记

    Microsoft SQL Server 2005技术内幕:T-SQL查询笔记 目录 f f f f f f f f 第二章 物理查询处理 分析,代数化,查询优化 f f f f f. 分析--> ...

  2. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01 1. MySQL体系结构和存储引擎 1.1 定义数据库和实例 数据库database: 物理操作系统文件或其他形式文件类型的集合. 当使 ...

  3. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 ​ 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...

  4. 读书笔记之MySQL技术内幕

    前言 本文内容基本摘抄自<MySQL技术内幕 InnoDB存储引擎>,以供复习之用,没有多少参考价值.想要更详细了解请参考原书. 第一章.MySQL体系结构和存储引擎 数据库是物理操作系统 ...

  5. mysql技术内幕sampdb_MySql技术内幕之MySQL入门(1)

    MySql技术内幕之MySQL入门(1) 安装 检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 若没有显示已安装结果,则没有安装.否则表示已经安装. ...

  6. java支付宝支付_Java 高并发环境下的性能优化,揭秘支付宝技术内幕

    前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适 ...

  7. 从Paxos到ZooKeeper-四、ZooKeeper技术内幕

    本文将从系统模型.序列化与协议.客户端工作原理.会话.服务端工作原理以及数据存储等方面来揭示ZooKeeper的技术内幕. 一.系统模型 1.1 数据模型 ZooKeeper的视图结构使用了其特有的& ...

  8. SQLServer 2008 技术内幕——T-SQL 查询 笔记

    原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得 ...

  9. jQuery技术内幕:深入解析jQuery架构设计与实现原理1

    jQuery技术内幕:深入解析jQuery架构设计与实现原理 高 云 著 图书在版编目(CIP)数据 jQuery技术内幕:深入解析jQuery架构设计与实现原理 / 高云著. -北京:机械工业出版社 ...

  10. 技术内幕 | StarRocks Pipeline 执行框架(下)

    作者:冉攀峰,StarRocks 核心研发,知乎账号 satanson 导读:欢迎来到 StarRocks 技术内幕系列文章,我们将为你全方位揭晓 StarRocks 背后的技术原理和实践细节,助你快 ...

最新文章

  1. K8S configmap详解:从文件创建、从文件夹创建及以volume、env环境变量的方式在pod中使用
  2. 2018年计算机专业考研,2018年计算机专业考研大纲解析
  3. python装饰器函数执行后日志_Python装饰器使用规范案例详解
  4. Radware:安全信息的传送可以加速网络攻击的防御
  5. Honeycomb Gym - 102028F(bfs)
  6. mysql 第二大的数据_MYSQL – 从大表中的第二行中选择数据
  7. 第25版 OpenStack Yoga 已发布
  8. Windows10 部署 Sonarqube 代码质量管理平台
  9. 特征工程系列学习(一)简单数字的奇淫技巧(下)
  10. oracle存储过程捕捉异常后回滚_Oracle存储过程中异常处理应注意的问题
  11. c语言abc组合abc cba=n,组合问题(先提取数字+全组合)
  12. python ip,Python IP处理模块IPy(转载)
  13. log4j.xml示例_log4j.xml示例配置
  14. 重新认识Java包的命名规则
  15. 基于GJB438C-2021的软件需求规格说明
  16. 名字也可能惹祸?Gitee.com被停止域名解析
  17. html5头像裁剪,H5头像裁剪的实现与坑位
  18. 计算机检索的辅助检索方法有,中国知网等文献检索的一般方法.docx
  19. 玖月:如果真的能够穿越回到过去,我可能只会给自己一个微笑
  20. RSI指标及其发明人Welles Wilder的前世今生

热门文章

  1. C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作
  2. 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用
  3. 15.17 对缺乏潜在类型机制的补偿
  4. mysql分组后去重复数据_mysql去掉重复数据只保留一条,以及取分组后的一条数据...
  5. 对象池commons-pool
  6. 复合索引在什么情况下使用
  7. [Nginx]用Nginx实现与应用结合的訪问控制 - 防盗链
  8. 02-HTTP的请求方法以及响应状态码
  9. 说说云盘背后的黑科技!
  10. url携带的参数获取并处理demo