码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象(四) is和as运算符,类库,委托

时间:2017-07-16 15:42:52      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:rand   中间人   报错   bool   接口   包括   默认   后缀名   基类   

一、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里面。

委托的参数类型和返回类型必须和被委托的方法一样。

委托是把一个方法变成了变量,所以可以把方法作为变量用到另一个方法里。

委托更多用在事件当中。

面向对象(四) is和as运算符,类库,委托

标签:rand   中间人   报错   bool   接口   包括   默认   后缀名   基类   

原文地址:http://www.cnblogs.com/shenyuyaqing/p/7106473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!