• 数组,集合,泛型


    在C#中我们学到了一些讲数据组合到一起的方法,那就是通过数据,集合,泛型,现在我就来简单的谈谈本人自己对他们的理解:

    数组:这个是我们最早接触的,可以存放很多不同类型的值,缺点就是位置太死,不能动,比如往数组的中

          间入数据就不行

    集合:ArrayLIst HashTable,可以说它就是一个动态的数组,很灵活,很好的解决了数组的一些缺点,可以放置

         不同类型的值

    泛型:List<int> bb = new List<int>();
          IList<int> cc = new List<int>();

          它限制了存放的数据类型,好处有以下几点

         (一)泛型好处一:减少代码的重复性,或者说提高了重用性。

         (二)泛型的好处二:减少繁复的装箱拆箱操作,提高代码的效率性以及避免装箱拆箱过程中的风险性

         (三)泛型的好处三:提供了一系列泛型集合类,方便了平时的编程,提高了效率,减少了代码量。

         ArrayList al=ArrayLisr();

         IList a=new ArrayList();

         IList<int> b=new List<int>();

     

    下面详细介绍下泛型的用法

     

    View Code
    集合的概述:
    1.ArrayList
    2.hashtable
    3.List<T>
    4.Dictionary<K,V>

    -------------------------ArrayList-------------------------------
    概述:1.非常类似于数组,称之为:数组列表。
          2.数组的容量是固定的。
          3.它可以根据类提供的方法,进行访问。
          4.ArrayList类来自“System.Collections”命名空间。(一定要引入)
          5.ArrayList只提供一维数组的形式。
          6.ArrayList是动态可维护的。
          7.申明一个ArrayList时必须实例化。
    语法:
    public int  Add(object,value);
       注释:Add()方法返回的是一个int整型。

    示例1:
    ..........
    //建立班级学员集合
    ArrayList students=new ArrayList();

    Student zhang=new Student("王羲之","",40"书法");
    Student fang=new  Student("欧阳询","",50,"书法");

    students.Add(zhang);
    students.Add(fang);

    //打印集合数目
    MessageBox.Show(string.Format("共包括{0}个学员",students.Count.Tostring()));

    .................


    //存取单个元素
    Student stu1=(Student)students(0);
    stu1.SayHi();-----调用SayHi()方法


    //删除ArrayList中的元素
    总共有三种:
    1.RemoveAt(int index)方法删除指定index的元素。
    2.Remove(object,value)方法删除一个指定对象的元素。
    3.Clear()方法移除集合中的所有元素。
    例如2.:
    //使用索引删除元素
    students.RemaveAt(0);-------0:索引值
    //使用对象名删除元素
    students.Remave(zhang);------zhang:对象名
    //删除所有的元素
    students.Clear();


    //遍历ArrayList中的元素
    两种方法:
    1.for循环
    2.foreach循环

    示例:
    //for循环
    for(int i=0;i<students.count;i++)
    {
        Student stufor=(Student)students[i];
        Console.WriteLine(stufor.Name);
    }

    //foreach循环
    foreach(Object stuo in students)
    {
        Student stuforeach=(Student)stuo;
        Console.WriteLine(stuforeach.Name);
    }

     

    -------------------------Hashtable(哈希表)-------------------------------
    概述:
           1.哈希表也属于System.Collections命名空间。
           2.它的每个元素都是一个键/值对。
           3.添加元素也需要使用Add()方法;
           4.哈希表的Add()方法有2个参数,一个表示键,一个表示键所对应的值。

    语法:
    public void  Add(Object key, Object value)

    示例:
    Hashtable students=new Hashtable();
    Student zhang =new ("颜真卿","",60,"书法")
    Student yang =new ("柳公权","",55,"书法");

    //使用Add方法添加元素
    students.Add(zhang.Name,zhang);
    studnets.Add(fang.Name,fang);


    //获取指定的元素
    Student stu2=(Student)students["zhang"];
    stu2.SayHi();


    //遍历哈希表
    //foreach循环遍历
    foreach(Object stuno in students .values)
    {
       Student stuforeach=(Student)stuno;
       Console.WriteaLine(stuforeach.Name);
    }

    //哈希表的属性
    ---------------------------------------------------------
    |           属性        |         功能说明              |
    |-----------------------|-------------------------------|
    |     Values            |    获取哈希表中所有的键       |
    |-----------------------|------------------------------ |
    |     Keys             ┃    获取哈希表中所有的值      ┃
    |-----------------------|-------------------------------|


    //删除哈希表中的元素
    语法:
    public void Remove(Object,Key);-------------------------只有一种删除方法

    例如:
    students.remove("颜真卿");

    -------------------------------泛型和泛型集合--------------------------------
    泛型:
    概念:
          1.泛型是C#2.0中的一个新特征。通过泛型可以定义安全的数据类型。
          2.比较典型的泛型集合是:List<T>和Dictionary<K,V>.
          3. 泛型集合必须实例化。

    泛型集合List<T>
    语法:List<T>泛型集合的方法如下:
    List<Student> students =new List<Student>();
    注释:"<T>"中的"T"可以对集合中的元素进行约束,T表明集合中管理的元素类型。

      1.它存储数据的方式和ArrayList相似
    示例:
    //访问单个字符
    //通过索引访问,无需类型转换
    Student stu1=students[2];
    SayHi();

    //通过索引删除
    students.RemaveAt(0);
    students.Remave(zhang);

    //foreach循环遍历
    foreach(Student stu in students)
    {
        Console.WriteLine(stu.Name);
    }


    表4-2 List<T>与ArrayList的区别
    ┏━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
    ┃  共同点  ┃    List<T>                   ┃     ArrayList        ┃
    ┣━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━┫
    ┃          ┃ 对所有保存元素做类型约束     ┃  可以增加任何类型    ┃
    ┃   不同点 ┣━━━━━━━━━━━━━━━┻━━━━━━━━━━━┃
    ┃          ┃ 添加/读取无需拆箱、装箱      ┃添加/读取需要拆箱,装箱┃
    ┣━━━━━┻━━━━━━━━━━━━━━━┻━━━━━━━━━━━┃
    ┃          ┃  通过索引访问集合中的元素                            ┃     
    ┃          ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
    ┃  相同点  ┃  添加元素方法相同                                    ┃
    ┃          ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
    ┃          ┃  删除元素方法相同                                    ┃
    ┗━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━┛


    泛型集合Dictionary<K,V>
    概念:
        1.它具有泛型集合的全部特征。
        2.它存储数据的方式和哈希表类似。
        3.也是通过Key/Value值对保存元素的。

    语法:
    定义一个Dictionary<K,V>泛型集合的方法如下所示:
    Dictionary<string,Student> students=new Dictionary<string,Student>();

    示例:
    //创建学员集合
    Dictionary<string ,Student> student=new Dictionary<string, Student>();

    Student zhang =new Student("王羲之","男,25,"书法")
    //添加元素
    students.Add(zhang.Name,zhang);


    //通过关键字来访问
    Student stu2=students("王羲之"
    stu2.SayHi();--调用SayHi方法;

    //foreach循环遍历
    foreach(Student student in students.values)
    {
        Console.WriteLine(student.Name);
    }


    //删除元素
    students.Remove("王羲之");

    注意:
          1.Dictionary<K,V>的Key是string类型;
          2.Value是Student类型保存学员对象

     

    多思考,多创新,才是正道!
  • 相关阅读:
    HTML5学习笔记第二节(Email标签(自动验证格式),Number标签,URL标签...)
    Ping检测工具(QQ皮肤实现)
    C#多线程|匿名委托传参数|测试您的网站能承受的压力|附源代码
    PostgreSQL抛错“不良的类型值: long”之解决
    jdbcTemplate.queryForInt()过时替换方法
    Windows Phone 实用开发技巧(27):创建透明Tile
    快乐技术沙龙技术分享之账户助手
    Windows Phone 实用开发技巧(11):让StackPanel中的控件靠右对齐
    Windows Phone 实用开发技巧(19):使用ProgressIndicator做进度显示
    Windows Phone 实用开发技巧(13):自定义Element Binding
  • 原文地址:https://www.cnblogs.com/shuang121/p/1970410.html
Copyright © 2020-2023  润新知