一、索引器
1.索引器是什么?
索引器是一种特殊的
成员类,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写
2.如何给类添加索引器?
添加一个this[int index]属性,这个属性类型是 集合里面存储的类型
public People this[int index]
3.如何给索引器添加重载?
public People this[string index]
{
get
{
//获取Lists其中一个元素 根据对象的名字取出元素,根据name='张三’,找张三整体对象
for (int i = 0; i < Lists.Count; i++)
{
if (Lists[i].Name==index)
{
return Lists[i];
}
}
return null;
}
set
{
for (int i = 0; i < Lists.Count; i++)
{
if (Lists[i].Name == index)
{
Lists[i] = value;
break;
}
}
}
}
二、泛型约束
1.泛型是什么?
所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用
在定义泛型类时,可以对代码能够在实例化类时用于类型参数的类型种类施加限制。如果代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的
2.五种类型的约束有那些?
1 值类型泛型约束:只允许泛型为值类型 T 只能是值类型
public void F1<T>(T a) where T : struct
{
}
2 引用类型泛型约束:只允许泛型为引用类型 T 只能是引用类型
public void F2<T>(T a) where T : class
{
}
3 某个类的泛型约束::只允许泛型为该类或者子类 T 只能是Stu类型 或者Stu的子类
public void F3<T>(T a) where T : Stu
{
}
4 接口的泛型约束:只允许泛型为实现这个接口的类或者子类 T 只能是Boy类型 或者Boy的子类
public void F4<T>(T a) where T : IMan
{
}
5 U泛型约束, T的只能是U提供的类型,或者U的子类,T要么是U类型,要么是U子类
public void F5<T,U>(T a,U b) where T : U
{
}