泛型:顾名思义泛泛的数据类型,也就是不确定的意思。

泛型集合:对所保存的元素进行类型约束,在调用添加值类型时无需拆箱装箱,避免了许多不必要的操作!

常用的泛型集合:List<T>和Dictionary<K,V>。

 

 

ADO.NET中我们可以通过编写SQL语句来对程序中的数据进行增.删.改.查等等操作,那么泛型集合中的元素可以进行增.删.改.查等操作吗?

一:List<T>

当然可以

增:

使用集合的Add()方法

方法一:

 1  Person p1 = new Person();
 2             p1.name = "张三";
 3             p1.id = "20090101";
 4             p1.sex = "";
 5             p1.age=20;
 6             Person p2 = new Person();
 7             p2.name = "李四";
 8             p2.id = "20090102";
 9             p2.sex = "";
10             p2.age = 20;
11             list.Add(p1);
12             list.Add(p2);

 

方法二:使用构造函数赋值

 1 class Person
 2 {
 3         //构造函数
 4         public Person(string grade01, int earth03, string fight01)
 5         {
 6             grade = grade01;
 7             earth = earth03;
 8             fight = fight01;
 9         }

10 }

  

 1     static void Main(string[] args)
 2         {
 3              Person p2 = new Person("90级", 500000, "8999");
 4             list.Add(p2);
 5             foreach (Person item in list)
 6             {
 7                 Console.WriteLine("巫师的生命值是:{0},战斗力是:{1},       等级是{2}", item.Earth, item.Fight, item.Grade);
 8             }
 9             Console.ReadLine();
10 }

删:

使用Remove()和RemoveAt()方法。

使用foreach遍历集合,找到满足条件的一项进行删除

 1   string id=this.dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();
 2                     foreach (Person item in list)
 3                     {
 4                         if(item.id==id)
 5                         {
 6                             list.Remove(item);
 7                             this.dataGridView1.DataSource = new BindingList<Person>(list);
 8                             break;
 9                         }
10                     }

改:同样使用foreach遍历集合,找到满足条件的一项进行修改。

 1  for (int i = 0; i < frm.list.Count; i++)
 2                 {
 3                     if (frm.list[i].name == this.name)
 4                     {
 5                         frm.list[i].name = txtname.Text;
 6                         frm.list[i].id = txtid.Text;
 7                         frm.list[i].age = Convert.ToInt32(txtage.Text);
 8                         frm.list[i].sex = this.cobsex.SelectedItem.ToString();
 9                     }
10                 }

二:Dictionary<K,V>

首先确定好Key和Value的数据类型

增:

1 HealthCheckSet he = new HealthCheckSet();
2         this.item.Add(textBox1.Text, he);

删:

使用Remove()方法,删除带有特定键的元素。

 1  static void Main(string[] args)
 2         {
 3             //先添加一个元素
 4             //删除一个元素
 5             Dictionary<string, Person> dic = new Dictionary<string, Person>();
 6             Person p1 = new Person();
 7             p1.name = "张三";
 8             p1.age = 19;
 9             dic.Add(p1.name, p1);
10             dic.Remove(p1.name);
11             foreach (KeyValuePair<string,Person> item in dic)
12             {
13                 Console.WriteLine("key是:{0},Value是:{1}", item.Key, item.Value.age);
14             }
15             Console.ReadLine();
16         }

改:

 1      static void Main(string[] args)
 2         {
 3              4             //将年龄从19改为20
 5             Dictionary<string, Person> dic = new Dictionary<string, Person>();
 6             Person p1 = new Person();
 7             p1.name = "张三";
 8             p1.age = 19;
 9             dic.Add(p1.name, p1);
10             foreach (Person item in dic.Values)
11             {
12                 if (item.age == 19)
13                 {
14                     item.age = 20;
15                 }
16                 Console.WriteLine("年龄是:{0}", item.age);
17             }
18             Console.ReadLine();
19         }

三:泛型类

1  public class Cat<R>
2     {
3         public R Name { get; set; }
4     }
 1  Cat<string> cat=new Cat<string>();
 2             cat.Name = "2";
 3 
 4 
 5             Cat<int> cat2 = new Cat<int>();
 6             cat2.Name = 12;
 7 
 8             //数组和集合都是    数据类型
 9             Cat<List<string>> cat3 = new Cat<List<string>>();
10             List<string> list=new List<string>();
11             cat3.Name =list;
12 
13 
14             Cat<Dictionary<string,string>> cat4=new Cat<Dictionary<string, string>>();
15             Dictionary<string,string> dic=new Dictionary<string, string>();
16             cat4.Name = dic;