位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C#使用多播委托应该注意的问题

提问人:刘冬梅发布时间:2020-10-13

(1)多播委托的委托方法最好是没有返回值的方法,也就是void方法,如果委托了带有返回值的方法也无法获得级联的结果。

using System;

namespace Proj6_10

{    delegate int mydelegate(int x, int y);//声明委托类型,可直接在命名空间下

      class MyDeClass

      {    public static int add(int x, int y)  {return  x + y; }

            public static int sub(int x, int y)  {return  x - y; }

            static void Main( )

            {

               mydelegate p= MyDeClass.add;  //委托静态方法,不需要类的实例

               p+= MyDeClass.sub;

               int  result=p(4,6);

               Console.WriteLine(“结果是{0}”,result) ;                 

             }

        }

}


结果是-2。

(2)多播委托只支持“+”、“-”、“+=”和“-=”四种运算。例子:

using System;

namespace Proj6_10

{    delegate void Del(string s);//声明委托类型,可直接在命名空间下

      class TestClass

      { static void Hello(string s){Console.WriteLine(“Hello,{0}!”,s)};

         static void Goodbye(string s){Console.WriteLine(“Goodbye,{0}!”,s)};

         static void Main( )

            {Del a,b,c,d;

              a=TestClass. Hello; b=TestClass. Goodbye;

               c=a+b;  //建立组合委托c,是a、b两个委托组成的委托链

               d=c-a;  //从委托链中去除a委托

               Console.WriteLine(“调用委托a:”); a(“A”);

               Console.WriteLine(“调用委托b:”); b(“B”);

               Console.WriteLine(“调用委托c:”); c(“C”);

               Console.WriteLine(“调用委托d:”); d(“D”); 

              }

        }

}

结果是:

调用委托a:

Hello,A!

调用委托b:

Goodbye,B!

调用委托c:

Hello,C!

Goodbye,C!

调用委托d:

Goodbye,D!

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部