正经学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 @   ARM830  阅读(374)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示