1、List泛型集合的简介
什么是List泛型集合?对元素类型有确切的定义,和数组类型一样,一旦确定了元素的类型,里面的集合类型也就确定了,但它长度可以改变。
2、List定义与转换
List<int> list = new List<int>();//System.Collections.Generic;
list.Add(111);
list.AddRange(new int[] { 222, 333, 444 });
Console.WriteLine(list);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
//可以转换为数组
int[] nums = list.ToArray();
for (int i = 0; i < nums.Length; i++)
{
Console.Write("int[] {0}", nums[i]);
}
List<int> list2 = nums.ToList();
for (int i = 0; i < list2.Count; i++)
{
Console.WriteLine(list2[i]);
}
Console.ReadKey();
3、装箱拆箱
装箱:将值类型转换为引用类型,
拆箱:将引用类型转换为值类型
ArrayList:
List:
所以程序尽量避免装箱和拆箱!!!
装箱和拆箱有条件:看两种类型是否发生了装箱或者拆箱,要看,这两种类型是否存在继承关系。
反面教材:
//这个地方了例外,可没有装箱和拆箱
string str = "123";
int num = Convert.ToInt32(str);//根本不是继承关系,存在不同的内存里
Console.ReadKey();
正面教材:
int num = 10;
IComparable i = num;//public struct Int32 : IComparable, IFormattable, IConvertible, IComparable<int>, IEquatable<int>
//是父类,所以是装箱
Console.ReadKey();
4、dictionary字典集合
首先要创建集合:
Dictionary<int,string> dic=new Dictionary<int,string>();
dic.Add(1, "zs");
dic[2] = "ls";
foreach (var item in dic.Keys)
{
Console.WriteLine("{0}--->{1}", item, dic[item]);
}
//一对一对遍历
Console.WriteLine("//一对一对遍历");
foreach (KeyValuePair<int,string>kv in dic)
{
Console.WriteLine("{0}--->{1}", kv.Key, kv.Value);
}
Console.ReadKey();
5、泛型集合的练习
将一个数组中的奇数放到一个集合,将偶数放到另一个集合。