chenpeng

C#委托案例
**什么是委托?委托是一个类型,用来指称所有形式相同的方法(返回值类型相同而且参数也相同)。public dele...
扫描右侧二维码阅读全文
19
2020/01

C#委托案例

**什么是委托?
委托是一个类型,用来指称所有形式相同的方法(返回值类型相同而且参数也相同)。
public delegate double Handler(double[] ds);
public double Sum(double[] ds) {//在方法中执行操作。}
public double Average(double[] ds) {//在方法中执行操作。}
委托的实例化 用new关键字(将方法名作为参数)生成一个委托对象,建立委托与方法的关联。
例: Handler handler = new Handler(Sum); 使用委托 可以像使用变量一样使用委托的实例。使用委托时,需要给委托按要求传递参数。 使用委托,则委托所关联的方法被调用。
例: double[] weights={1.0,2.0,3.0,4.0}; double result=handler(weights);
一个委托可以通过+运算委托关联多个方法,叫多路广播委托(对应于单路广播委托)。 如果此时使用委托,则所有的关联方法都被调用。 例:
Handler handler = new Handler(Sum); handler += new Handler(Average);
说白了,委托就是第三方,调用者告诉第三方要做什么,然后调用者就不用管了 这个委托(第三方)就会去调用方法去帮你实现
委托的好处: 1.相当于用方法作为另一方法参数(类似于C的函数指针)
2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托
3.当不知道方法具体实现什么时使用委托,如:事件中使用委托**
废话不多说直接上代码:

namespace Delegate
{
delegate void DGSayiHi(string name);//声明委托
delegate void DGDo(string name);
class Program
{
    static void Main(string[] args)
    {
        DGSayiHi sayhi = new DGSayiHi(SayChineseHi);
        DGSayiHi sayhi2 = new DGSayiHi(SayEnglishHi);
        sayhi += sayhi2;//实际+=相当Delegate.Combine, -=相当Delegate.Remove

        sayhi("哇哦");
        Console.ReadLine();
    }
    static void SayChineseHi(string name)
    {
        Console.WriteLine("嗨喽:" + name);
    }

    static void SayEnglishHi(string name)
    {
        Console.WriteLine("Hello:" + name);
    }
}
}
Last modification:January 19th, 2020 at 12:00 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment