请解释这程序详细流程,最好在每行代码后添加备注

yangyang528 2011-01-04 10:42:04
namespace N01
{
    delegate void MyDelegate(string s);
    class myClass
    {
        public static void hello(string s)
        {
            Console.WriteLine("您好,{0}",s);
        }
        public static void goodbye(string s)
        {
            Console.WriteLine("再见,{0}",s);
        }
    }
    class program
    {
        static void Main(string [] args)
        {
            MyDelegate a,b,c,d;
            a=myClass.hello;
            Console.WriteLine("调用委托变量a:");
            a("a");
            Console.WriteLine("调用委托变量b:");
            b = myClass.goodbye;
            b("b");
            c=a+b;
            Console.WriteLine("调用委托变量c:");
            c("c=a+b");
            d=c-a;
            Console.WriteLine("调用委托变量d:");
            d("d=c-a");
            Console.Read();
        }
    }
}
...全文
154 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-01-04
  • 打赏
  • 举报
回复
class Class1
{
//定义一个委托
delegate void MyDelegate(string s);
class myClass
{
public static void hello(string s)
{
Console.WriteLine("您好,{0}", s);
}
public static void goodbye(string s)
{
Console.WriteLine("再见,{0}", s);
}
}
class program
{
static void Main(string[] args)
{
//创建该委托对象
MyDelegate a, b, c, d;
//把hello方法作为参数委托给Mydelegate,此方法的参数必须和委托的参数是一直的
//以下同理
a = myClass.hello;
Console.WriteLine("调用委托变量a:");
//调用了该委托。执行的是hello方法
a("a");
Console.WriteLine("调用委托变量b:");
b = myClass.goodbye;
b("b");
c = a + b;
Console.WriteLine("调用委托变量c:");
c("c=a+b");
d = c - a;
Console.WriteLine("调用委托变量d:");
d("d=c-a");
Console.Read();
}
}
}
「已注销」 2011-01-04
  • 打赏
  • 举报
回复
class Class1
{
//定义一个委托
delegate void MyDelegate(string s);
class myClass
{
public static void hello(string s)
{
Console.WriteLine("您好,{0}", s);
}
public static void goodbye(string s)
{
Console.WriteLine("再见,{0}", s);
}
}
class program
{
static void Main(string[] args)
{
//创建该委托对象
MyDelegate a, b, c, d;
//把hello方法作为参数委托给Mydelegate,此方法的参数必须和委托的参数是一直的
//以下同理
a = myClass.hello;
Console.WriteLine("调用委托变量a:");
//调用了该委托。执行的是hello方法
a("a");
Console.WriteLine("调用委托变量b:");
b = myClass.goodbye;
b("b");
c = a + b;
Console.WriteLine("调用委托变量c:");
c("c=a+b");
d = c - a;
Console.WriteLine("调用委托变量d:");
d("d=c-a");
Console.Read();
}
}
}
wangsong145 2011-01-04
  • 打赏
  • 举报
回复
这是委托的使用Demo,楼主需要搞清楚委托的意思,委托可以看作方法的一个抽象,方法是委托的实例


//定义委托
delegate void MyDelegate(string s);
class myClass
{
//定义方法1
public static void hello(string s)
{
Console.WriteLine("您好,{0}", s);
}
//定义方法2
public static void goodbye(string s)
{
Console.WriteLine("再见,{0}", s);
}
}
class program
{
static void Main(string[] args)
{

MyDelegate a, b, c, d; //定义委托变量
a = myClass.hello;//实例化委托a,执行myclass的hello方法
Console.WriteLine("调用委托变量a:");
a("a");//执行myClass.hello方法
Console.WriteLine("调用委托变量b:");
b = myClass.goodbye;
b("b");
c = a + b;//实例化委托c,执行a = myClass.hello和myClass.goodbye方法
Console.WriteLine("调用委托变量c:");
c("c=a+b");
d = c - a;//实例化委托d,执行myClass.goodbye方法
Console.WriteLine("调用委托变量d:");
d("d=c-a");
Console.Read();
}
}
IT修补匠 2011-01-04
  • 打赏
  • 举报
回复
调用委托变量a:
您好,a
调用委托变量b:
再见,b
调用委托变量c:
您好,c=a+b
再见,c=a+b
调用委托变量d
再见,d=c-a
hnlnn87 2011-01-04
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Text;

namespace N01
{
delegate void MyDelegate(string s);
class myClass
{
public static void hello(string s) //带参数的函数
{
Console.WriteLine("您好,{0}", s); //{}占位符,("您好,{0}{1}", a,b),a给{0}, b给{1}
}
public static void goodbye(string s)
{
Console.WriteLine("再见,{0}", s);
}
}
class program
{
static void Main(string[] args)
{
MyDelegate a, b, c, d;
a = myClass.hello; //可理解为引用了hello函数
Console.WriteLine("调用委托变量a:");
a("a"); //a()=您好,{0} "a"为赋值
Console.WriteLine("调用委托变量b:");
b = myClass.goodbye;
b("b");
c = a + b;
Console.WriteLine("调用委托变量c:");
c("c=a+b");
d = c - a;
Console.WriteLine("调用委托变量d:");
d("d=c-a");
Console.Read();
}
}
}
w4bjx 2011-01-04
  • 打赏
  • 举报
回复
wyfde123 2011-01-04
  • 打赏
  • 举报
回复
delegate是委托的意思,可以理解为 指向方法的指针
委托返回类型和方法一致,委托的参数也必须和方法一致,参数的个数和类型都必需一致

a=myClass.hello就是把MyDelegate的实例指向public static void hello(string s)这个方法

然后就可以像直接使用这个方法一样传递参数获得返回值

c=a+b;是指同时指向了两个方法,执行的顺序是相加的顺序
d=c-a; 从c中去除a的指向,这时候的d就等于b

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧