新手求助,如何解读一段程序
新手求助,如何解读一段程序程序如下:
using System;
//定义一个具有加法功能的类
public class AddFunc
{
//定义一个具有加法功能的方法
public static void Add(int f, int s)
{
int result = f + s;
Console.WriteLine("{0}+{1}={2}",f,s,result);
}
}
//声明一个委托,和调用委托方法的类
public class UseAdd
{
//定义加法操作中的两个加数
protected int first;
protected int second;
//声明一个委托
public delegate void MyDelegate(int first,int second);
//声明一个委托实例
public Mydelegate ma;
//定义该类的构造方法
public UseAdd(int first, int second)
{
this.first = first;
this.second = second;
}
//定义调用委托的方法
public void Invoke()
{
if (ma != null)
ma(first,second);
}
}
public class AppMain
{
static public void Main()
{
//生成一个UseAdd类的实例
UseAdd p = new UseAdd(12,15);
//生成一个委托实例,并将它对应于AddFunc.Add方法
p.ma = new UseAdd.MyDelegate(AddFunc.Add);
//调用委托方法
p.Invoke();
string str = System.Console.ReadLine();
}
}
运行结果是:12+15=27
请详细说一下程序的解读过程(思路)?我初学编程希望大虾们能耐心指点下,谢谢。
是从Main()入口开始读取吗?
public delegate void MyDelegate(int first,int second)和p.ma=new UseAdd.MyDelegate(AddFunc.Add);
MyDelegate()里的参数是如何调用的?
可不可以这样理解:
UseAdd p=new UseAdd(12,15)
\\先执行构造函数
UseAdd.first=first
UseAdd.second=second
=>>p=UseAdd()
UseAdd(int first,int second)
\\代入参数12,15。返回
=>>UseAdd.fist=12,UseAdd.Second=15
p.ma=new UseAdd.MyDelegate(AddFunc.Add)
=>>ma=MyDelegate(AddFunc.Add)
=>>ma=AddFunc.Add \\MyDelegate委托在这里是不是可以舍去
=>>public delegate void MyDelegate(int first,int second)
public static void Add(int f,int s)
\\是不是因为这里定义的Add()方法带了两个参数,所以才可以跟MyDelegate()对应上
=>>f=12,s=15,result=27。\\Add()方法返回空值(void)然后输出12+15=27。
p.Invoke()
=>>UseAdd().Invoke()
public void Invoke()
{
if(ma!=null)
ma(first,second);
}
=>>因为先前Add()方法返回了空值,所以不执行。
哪位大虾能不能通过的更简明的写法阐述一遍
我记得C里面好像有个因为所以的写法来着。
包括函数的返回值。程序的执行顺序。。谢谢。
[[it] 本帖最后由 ywqsa206 于 2008-4-14 17:23 编辑 [/it]]