C#中委托的问题。

来源:百度知道 编辑:UC知道 时间:2024/06/07 02:28:42
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication9
{
class program
{
delegate void strparafunc(int no, string str);//声明委托
static void printstring(int no, string str)//静态函数1
{
System.Console.WriteLine("{0}:printstring:{1}", no, str);
}
static void showstring(int no, string str)//静态函数2
{
System.Console.WriteLine("{0}:showstring:{1}", no, str);
}

static void Main(string[] args)//程序入口
{
strparafunc spf1 = new strparafunc(printstring);//这个?
strparafunc spf2 = printstring;//这个?
spf1(1, "a string 1");//?
spf2(2, "a string 2");//?
spf1 += showstring;//增加引用函数
spf1(3, &q

strparafunc spf1 = new strparafunc(printstring);//声明一个委托,也就是一个函数指针。这个指针指向的不是一个对象,而是一个方法。
strparafunc spf2 = printstring; // 声明另一个委托, 指向printstring函数。
spf1(1, "a string 1");//调用这个函数,其实相当于调用printstring
spf2(2, "a string 2");//调用这个函数,其实相当于调用 printstring
spf1 += showstring;//增加委托函数
spf1(3, "a string 3"); // 相当于调用了两个函数printstring,showstring。一个接一个地调用
spf1 -= printstring;//移除引用函数。只有showstring留着了。
spf1(4, "a sring 4");调用,相当于调用showstring

static void Main(string[] args)//程序入口
{
strparafunc spf1 = new strparafunc(printstring);//建立一个printstring方法的委托
strparafunc spf2 = printstring;//同上建立第二个委托,只是简写不建议使用
spf1(1, "a string 1");//执行委托方法也就是printstring
spf2(2, "a string 2");//同上执行第二个委托
spf1 += showstring;//增加引用函数
spf1(3, "a string 3");//执行委托方法printstri