using System; using System.Collections.Generic; using System.Text; namespace 委托 { class Program { public delegate int function(int a,int b ); static void Main(string[] args) { function fn = new function(add);
System.Console.WriteLine(fn(3, 6)) ; Console .WriteLine (print (jian,3,4)); Console.ReadLine(); } public static int print(function fn, int a, int b) { return fn(a,b); } public static int jian(int a, int b) { return a - b; } public static int add(int a,int b) { return a+b; } } } virtual 虚方法(基类中的方法声明为虚方法) override 覆盖(子类可重写基类的虚方法);
多态:就是多种形态,多态离不开重载(虚方法),没有重载多态就没有意义。比如,圆形、正方形、长方形、椭圆形、三角形、多边形等等都是图形,要把这些图形都画出来,我们需要为这些图形定义一个绘制的方法(比如DRAW),而我们的主程序在调用的时候可能并不关心要绘制的图形究竟是什么样的图形,主程序只关心图形的绘制位置等信息就行了,这个时候,我们就可以使用多态:1——
定义一个基类(可以是抽象类) 图形,给这个图形定义个虚方法(或抽象方法) 绘制2——
根据需要定义不同的具体图形类,让这个具体的图形类继承自 步骤1 定义的图形类,重载虚方法(抽象方法) 绘制,在重载后的方法 绘制 中根据这个图形类的特点执行具体的绘制操作3——
主程序在要绘制一个图形时只要获得一个基类 图形 的派生子类 的具体实例对象,然后调用这个对象的绘制方法就OK了。这样,主程序中(假如是个方法)只要以 图形 为类型传递具体的实例对象,然后执行 绘制 方法的调用就行。否则,就需要分别写不同图形的具体绘制方法调用函数。
using System.Collections.Generic;
using System.Text;
namespace 委托
{
class Program
{
public delegate int function(int a,int b );
static void Main(string[] args)
{
function fn = new function(add);
System.Console.WriteLine(fn(3, 6)) ;
Console .WriteLine (print (jian,3,4));
Console.ReadLine();
}
public static int print(function fn, int a, int b)
{
return fn(a,b);
}
public static int jian(int a, int b)
{
return a - b;
}
public static int add(int a,int b)
{
return a+b;
}
}
}
virtual 虚方法(基类中的方法声明为虚方法)
override 覆盖(子类可重写基类的虚方法);
http://topic.csdn.net/u/20080626/17/1742fccb-1513-4543-9f9f-045660d24666.html