一、泛型
泛型:通过泛型可以实现在同一份代码上操作多种数据类型的逻辑,将类和类中的成员定义为泛型,在使用时再指明类型,从而实现对不同类型的操作
定义一个泛型类:
注意:类定义为泛型时,这个泛型可以在类中的任意成员中使用
internal class Class2<T> //<type>的缩写,类型是不确定的,可以当做任何类型,当使用时必须指明类型
{
//泛型数据
public T a;
public T b;
public Class2(T a, T b)
{
this.a = a;
this.b = b;
}
public T Add()
{
//dynamic 动态类型 可以储存任意类型的值在动态类型变量中,这些变量的类型在运行时发生
dynamic a=this.a;
dynamic b=this.b;
return a + b;
}
}
调用泛型类(使用时需要声明类型):
Class2<int> c2 = new Class2<int>(10,20);
Console.WriteLine(c2.Add());
二、泛型方法
泛型方法 :方法名后面加上
public static void Add<T>(T a,T b)
{
//要让检查在指定类型之后 ,需使用动态类型
dynamic c = a;
dynamic d= b;
Console.WriteLine(c+d);
}
调用泛型方法:
Add<string>("123","21");
三、ArrayList 动态数组
动态数组(一个集合)就是不固定长度和储存的数据类型的数组,可以储存任意类型的数据 并且长度会随着数组内容的增加减少进行改变
1.定义动态字符串
ArrayList list1 = new ArrayList() { "张三","love","狗屎",666};
2.属性
(1)Count
获取动态数组的数据个数
Console.WriteLine("长度:"+list1.Count);
(2)读取某个位置的数据 索引
Console.WriteLine(list1[3]);
3.方法
(1)Add
在数据的末尾添加
list1.Add("爽吃");
(2)Clear
清除列表 删除动态数组中的所有数据 Count重置为0
list1.Clear();
(3)Insert
插入在指定索引位置的数据
list1.Insert(2, "小明");
(4)Contains
查询动态数组中是否存在某个数据
Console.WriteLine(list1.Contains("李"));
(5)Remove
移除指定的数据
list1.Remove("666");
(6)RemoveAt
删除指定位置索引的值
list1.RemoveAt(0);
(7)RemoveRange
删除数组中指定范围内的数据
list1.RemoveRange(0, 3);//从0开始 删除3个
(8)Reverse
list1.Reverse();
(9)Sort
使用默认的排序方式进行排序
list1.Sort();
四、列表List
- 列表是属于集合类里面的
- 集合类:用来储存一堆数据的,是数据的集合
- 列表:列表只是集合中的一种储存数据的表达方式
1.创建列表
- List 列表属于是泛型类 列表在创建的时候可以给他一些初始值,在()后面更上{ }里面写数据。
- 更数组差不多 但是数组的长度是固定的 ,列表是可以往里面添加数据 ,长度是不固定的。
- 列表的内部数据在储存时其实也是使用的数组,一个空的列表会有长度为0的数组,当给列表添加数据的时候,默认情况下 列表的容量会扩大为4,如果添加5个数据就会扩容为8。。。倍增 如果自己设置了容量,就会更具设定的倍增,当列表的容量发生变化时,会重新创建新的数组 Array.Copy()将就数组中的数据复制到新数组里面去
List<int> list= new List<int>() { 6,3,4,10,1,2,3,4,5};
List<string> liststr = new List<string>();
2.方法
(1)Add
末尾添加数据
liststr.Add("爽吃");
(2)Count
获取当前列表中的数据个数
Console.WriteLine(liststr.Count);
(3)Insert
向列表中指定的位置插入输入
liststr.Insert(0,"张三");
(4)Remove
删除列表中指定的数据
liststr.Remove("张三");
(5)RemoveAt
删除列表中指定索引的数据
liststr.RemoveAt(0);
(6)RemoveAll
删除与之条件相匹配的数据 ,会返回删除的个数
int a = liststr.RemoveAll(EndsWithSaurus);
Console.WriteLine(a);
private static bool EndsWithSaurus(string s)
{
return s.EndsWith("张三");
}
(7)Sort
list.Sort();
(8)Capacity
获取或设置列表的容量
Console.WriteLine(listint.Capacity);
五、字典
- 字典类似于List 只能储存类型固定的数据 长度不固定
- List 使用索引进行数据的操作,字典要使用“键”进行数据操作
- 键:标识,在一个字典中,键是唯一的,并且不能为null
- 字典的作用:一般用于信息的记录 用字典储存的数据可以快速的查询
1.创建字典
格式Dictionary<键的数据类型,值的数据类型>变量=new Dictionary<键的数据类型,值的数据类型>();
创建字典时 可以给一些初始数据
Dictionary<string, int> keyValuePairs = new Dictionary<string, int>()
{
{ "Name",666},{ "性别",1},{ "年龄",18}
};
2.方法
(1)Add
向字典中添加数据
keyValuePairs.Add("身高", 189);
(2)Count
获取字典中储存的数据个数
Console.WriteLine(keyValuePairs.Count);
(3)索引器 访问键
访问字典中某个数据
Console.WriteLine(keyValuePairs["Name"]);
(4)修改键位 Name 的数据值
keyValuePairs["Name"] = 888;
(5)ContainsKey
判断字典中是否包含某个 键
Console.WriteLine(keyValuePairs.ContainsKey("Name"));
(6)ContainsValue
判断字典中是否包含某个 值
Console.WriteLine(keyValuePairs.ContainsValue(888));