一、is 和 as 运算符
1、object数据类型
object是所有数据类型的基类,所有数据类型都是从object中衍生出来的。所有数据类型都是object的子类型。
比如数组在添加数据时,默认就是object类型的数据,系统会隐式转换为数据对应的类型。
基类可以隐式转换为子类,但子类无法隐式转换为基类。
如果一个数组中的数据的类型未知,那么提取数据时就需要先判断和转换数据类型,这个时候就会用到is和as运算符。
2、is运算符
is运算符用于判断一个数据是否是某个数据类型。
对象 is 类型 返回bool类型
//数组 ArrayList arr =new ArrayList(); arr.add(一些数据); //判断 bool a = arr[2] is Radom;
如果该数据是is后面的数据类型,那么会返回true,否则返回false。
可以配合遍历使用。
foreach(object o in arr) { if(o is Random) { Random r = (Random)o; r.Next(0,11); } }
3、as运算符
as运算符可以用于转换未知数据类型到指定类型,如果转换成功,可以正常使用,如果转换失败,会返回null。
对象 as 类型
如果转换成功,返回对象类型。
如果转换失败,不会报错,而是返回null值。
同样配合遍历使用。
foreach(object o in arr) { Random r = o as Random; if(r != null) { r.Next(0,11); } }
二、类库
类库(Class Library)是一个综合性的面向对象的可重用类型集合,这些类型包括:接口、抽象类和具体类。
类库的后缀名为.dll,即dll文件就是类库。
类库是加密的,只有计算机能读取。
需要类库时,将写好的类用VS生成dll文件即可。
添加类库在解决方案 - 引用 - 右键 - 添加。然后点工具 - 生成解决方案。
三、委托
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
委托可以理解为函数的中间人,他最终指向一个函数方法。
//委托代码 public delegate int Weituo(int a,int b) //类 public class Lei { public int Fangfa(int a,int b) { return a+b; } } //建立委托 Lei e = new Lei(); Weituo f = e.Fangfa.
//调用委托
int g = f(a,b)
委托的关键词是 delegate 。
委托需要写在main函数外面,class里面。
委托的参数类型和返回类型必须和被委托的方法一样。
委托是把一个方法变成了变量,所以可以把方法作为变量用到另一个方法里。
委托更多用在事件当中。