数组,集合,泛型

在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类型保存学员对象

 

多思考,多创新,才是正道!
原文地址:https://www.cnblogs.com/shuang121/p/1970410.html