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

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

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

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

委托更多用在事件当中。

时间: 2024-08-07 04:55:57

面向对象(四) is和as运算符,类库,委托的相关文章

PHP100-第四讲 PHP5.4 运算符、流程控制

PHP中有丰富的运算符集,它们中大部分直接来自于C语言.按照不同功能区分,运算符可以分为:算术运算符.字符串运算符.赋值运算符.位运算符.条件运算符,以及逻辑运算符等.当各种运算符同在一个表达式中时,它们的运算是有一定的优先级的,下面将详细介绍.PPT下载请点击 PHP5.4 的流程控制语句if / switch-- PHP100-第四讲 PHP5.4 运算符.流程控制,布布扣,bubuko.com

学java教程之面向对象(四)

学编程吧学java教程之面向对象(四)发布了,欢迎通过xuebiancheng8.com来访问 本次课来分析java面向对象之构造方法.什么是构造方法呢,构造方法听名字顾名思义,构造的时候执行的方法就叫构造方法. 没错,构造方法就是在构造对象的时候执行的方法,就是构造方法,那什么时候构造对象呢,是不是在new的时候调用构造对象呢,所以构造方法就是在new对象的时候执行的方法就是构造方法.构造方法一般用来为对象赋初值.完成对象的初始化. 下面我们来看如何定义构造方法. public class P

.Net基础篇_学习笔记_第四天_关系运算符和逻辑运算符

1.关系运算符 包含:>   <   <=  >=   ==  != 以及bool类型中的true和false. 2.逻辑运算符 与 && 或 || 非 ! 注意: 逻辑运算符的两边放的一般都是关系表达式或者bool类型的值 3.复合运算符 +=  -= *= /= 另外:扩充延伸....... 判断是否为闰年? using System; using System.Collections.Generic; using System.Linq; using Syst

面向对象4-4 类库 委托

一.类库 1,这个不是类库 如果在公司内部,你不会某个代码(不是很机密的代码),你同事会,你同事在他的电脑上写了个代码.让你在自己的电脑上用,怎么做呢?看下面: (1)你同事创建了一个qiuhe的类. namespace ConsoleApplication59 //注意命名空间 { public class qiuhe { public int jiafa(int a, int b) { return a + b; } } } (2)在文件夹中找到名字为:qiuhe.cs的文件,传你的电脑上,

6.20 提纲 (var+类库+委托)

var万能变量: var a = 值/构造函数实例化: 给它什么类型的数据,它自动会变成相应的类型,不需要进行类型转换.   类库: 1.他人写好的.cs源代码文件,发送过来, 在自己的项目中添加进来,引用命名空间,调用方法:   一般用在公司内部,因为源代码文件可以看到,并且可以修改:   2.类库方式: 一个类库,就是一个dll结尾的文件,是源代码编译后的辅助文件: 在自己的项目中添加引用后,引用相对应的命名空间, 就可以实例化类库中的公共的类,并且可以调用公共方法   委托: 就是代理,事

类库 委托

1.C#源代码文件,包括在自己的项目中 2.类库,后缀名是.dll 优点:你写的方法别人看不到实现过程,保密性强 缺点:如果你写的方法有错误,别人无法更改 委托:可以理解为 函数的指针 delegate - 定义关键词 声明委托类型public delegate int FirstDel(int aaa, int bbb); 创建委托变量,赋值,函数指向FirstDel f1 = new JiaJian().Jia; int c = f1(10, 20); var:万能类型 object:所有类

SQL语言的四种类型和ORACLE运算符

sql语句四种类型: 数据定义语言(DDL) 数据操作语言(DML) 数据控制语言(DCL) 事务控制语言(TCL) Data Definition Language(DDL) DDL使我们有能力创建或删除表格.也可以定义索引(键),规定表之间的链接,以及施加表间的约束. CREATE DATABASE - 创建新数据库   ALTER DATABASE - 修改数据库   CREATE TABLE - 创建新表   ALTER TABLE - 变更(改变)数据库表   DROP TABLE -

面向对象(四)

前言:这个章节主要分享一些高级的PHP面向对象的知识 (一) 两种常见的设计模式(单例和工厂模式) 引言:在PHP中,存在两种常见的设计模式,一个是单例模式,另一个是工厂模式,这两中设计模式,并不是固定的PHP语法,而是广大的开发工作者在长期的开发工作中总结出来的开发经验. 1.单例模式 <?php //单例模式实现的目标效果是: 无论我们实例化多少次,都只能得到唯一的一个对象(空间). class A{ private static $_obj;//定义了一个 静态的 私有的 属性 //将构造

python学习之面向对象(四)

6.9 反射 反射是非常重要的内置函数之一. 反射是通过字符串去操作对象相关的属性,这里的对象包括:实列,类,当前模块,其他模块. 主要的四个函数: 查看: hasattr(对象,待查内容的字符串形式) 判断有没有,返回True或者False 获取: getattr(对象,要获取的内容的字符串形式,获取不到时的返回值) 增加: setattr(对象,要增加的内容的字符串形式) 删除: delattr(对象,要'删除的内容的字符串形式) 6.9.1 实例化中使用 class LOL: place

厘清面向对象四种模式:工厂模式、构造函数模式、原型模式、混合模式

面向对象是一种方法,用来封装功能,方便日后使用,避免大量的重复工作 一.工厂模式 (一)实现方法:在函数内创建一个对象并给对象赋予属性及方法,最终将对象返回. 1 function cPerson(name,sex,age){ 2  var o = new Object(); 3  o.name = name; 4  o.sex = sex; 5  o.age = age; 6  o.show = function(){ 7  console.log(this.name,this.age,thi