正经学C#_委托

以前不会,甚至连想去学都没想。啧啧啧,我是何等朽木啊。

我先不说其中理念,或者原理,咱就先说最简单的用法。怎么去使用委托。

委托 Delegate

使用委托,就要先定义一个委托。定义一个委托就要先声明以下。 关键字 Delegate

//定义一个 返回类型 int 并且带有参数的 MyDelegate
public delegate int MyDelegate (int s);
//定一个 没有返回值 并且带有参数的 MyDelegate1
public delegate void MyDelegate1(int s);
//定一个 没有返回值 并且没有参数的 Mydelegate2
public delegate void MyDelegate2;

 

上面定义了三种最简单的委托方式。 这样委托的声明就OK了。 那么怎么用呢? 如下 ,我们以第一个MyDelegate为例子

既然都定义委托了,那么就肯定有人去做了。也就是说我们必须有方法来进行使用。同样,既然被人委托做事情那么 委托的条件就需要一样。下面是方法的代码,很简答

    public static  int get(int  s)
        {
            return s * 10;
        //返回s*10的结果
        }

OK,我们的方法就说完了。那就是具体的怎么使用了。应为是控制台的程序 所以是静态的。

下面是具体使用方法

          //实例化,并且调用方法
           Mdelegate _mydelegate = new Mdelegate(get);
         //在委托中给方法赋值,返回int类型的值
            int nub= _mydelegate(5);
         //输出
            Console.Write(nub);

 

结果

代码很简单,但是理念都是一个理念的。男人女人都是人,只不过具体划分有些不一样的。当然委托不一样。根据其定义的委托的是否有返回值,是否有参数等,方法也是一一不样的。 用法也是如此。有的需要再开一个线程,我上一个复制文件的这个程序就需要再开一个线程在能让进度条滚动。 

委托的用法不只是一次用一个,也可以多次使用。

委托的多播

当然就是同样类型的委托可以合并再一次..就变成多播了,一个电视塔,可以同时播出好几十个电视频道同样感觉,同样的频道(类型)就可以合并在一起了。

ok,让我们看看例子

定一个委托 三个方法。

public delegate void Mydelegate(string str);
static void T1 (string str)
{

Console.Write("{0}",str);

}

static void T2 (string str)
{

Console.Write("{0}",str);

}

static void T3 (string str)
{

Console.Write("{0}",str);

}

下面是实例化并且关联方法

// 关联T1方法  
Mydelegate _mydelegate=T1;
// 关联T2方法 
_mydelegate+=T2;
// 关联T3方法 
_mydelegate+=T3;

_mydelegate("Delegate的多播");

结果如下

委托很简单,用法也是很简单

posted @ 2017-02-17 15:36  ARM830  阅读(373)  评论(0编辑  收藏  举报