形式为:if ( obj is classname )

时间:2021-12-21 05:16:15

一、抽象类与接口

  (1)抽象类:

    1、类中的要领不供给具体实现,但该类的派生类必需实现这些要领,这些要领在C#中称为抽象要领。

      2、 抽象要领必需是一个没有被实现的空要领。包罗抽象要领的类称为抽象类,抽象类中也可以包罗非抽象要领。 因为抽象类是用来作为基类的,所以不能直接被外部措施实例化,而且也不能被密封。

      3、通过关键字abstract进行符号将类声明为抽象。 不能创建抽象类的东西,但可以创建抽象类的引用。 一个abstract类可以不包罗抽象要领,可以包罗非抽象要领和变量。 抽象要领是虚要领的特例。 结构函数和静态要领不能是抽象的。 一个非abstract类不能包罗抽象要领。 子类若要笼罩抽象类的抽象要领时,要使用override关键字。 

  (2)接口:  

    接口成员访谒权限为public,,但不能加访谒修饰符, 接口成员不能有界说。 接口的成员必需是要领,属性,事件或索引器,不能包罗常数、字段、运算符、实例结构函数、析构函数或类型。

    接口和类的比拟:

形式为:if ( obj is classname )

二、is与as运算符

  is运算符:可以查抄东西与类之间的关系,形式为:if ( obj is classname )…… ,可用于确定接口是否可用。

  as运算符:完成的成果等价于:先用is查抄,再执行东西类型转换。 如果类型不兼容,as运算返回null。

三、委托与事件(还是不太大白!!!)

  (1)委托:是一种可以指向要领的引用,可以理解为一种函数指针,是类型安适的。它类似于C++中的函数指针,通过对付要领特征和返回值类型的声明,封装了具有不异特征和返回类型的要领。

    使用委托需要三个法式: 声明委托类型 ==》创建委托实例 ==》 向委托实例注册要领。

1 class Delegates 2 { 3 // 委托界说 4 public delegate int Call(int n1, int n2); 5 class Math 6 { 7 // 乘法要领 8 public int Multiply(int n1, int n2) 9 { 10 return n1*n2; 11 } 12 13 // 除法要领 14 public int Divide(int n1, int n2) 15 { 16         if(n2!=0) 17     return n1/n2; 18        else{ 19                 Console.WriteLine("除数不能为零!"); 20                 return -999999999; 21             } 22          } 23 } 24 25 static void Main(string[] args) 26 { 27 // 委托的东西 28 Call objCall; 29 // Math 类的东西 30 Math objMath = new Math(); 31 // 将要领与委托关联起来 32 objCall = new Call(objMath.Multiply); 33 // 将委托实例化 34 int result = objCall(4, 3); 35 System.Console.WriteLine("功效为 {0}", result); 36 } 37 }

View Code

  (2)事件:语法——[访谒修饰符] event 委托名 事件名;