• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#零基础学习理解委托

C#零基础学习理解委托

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了C#零基础学习理解委托等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

   说来惭愧,在大学的课程中,竟然没有听说过委托这个名称。那么今天我就带着大家一起探讨下委托和事件。

咱们先来看下委托

我主要从以下几个方面讲解

1,  为什么使用委托  2.什么是委托  3.委托如何使用

为什么使用委托?

委托是c#中非常重要的一个概念,使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。

什么是委托?

委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有相同的行为,委托方法的使用和其他方法一样,具有参数和返回值。

如何使用委托

下面咱们就抛开枯燥的概念,来看几个活生生的例子是怎么使用委托的吧!

 案例1:中国人和英国人问好

 分析:1.首先我们需要编写一个中国人问好的方法和一个英国人问好的方法。

       2.编写一个Greet方法,将问好方法作为一个参数,实现各个国家人的问好方法。

       3.使用委托实现各个国家人的问好功能

  使用委托分为三个步骤:1,定义委托  2.声明委托变量  3.使用委托

       public delegate void GreetDelegate(string name);

      class Program

    {

        static void Main(string[] args)

        {

                     //2.声明委托变量

 GreetDelegate dDelegate = new GreetDelegate(ChineseGreeting);

//3.使用委托

            dDelegate("李小龙");

            Console.ReadKey();

        }

//中国人问好方法

        public static void ChineseGreeting(string name)

        {

            Console.WriteLine("早上好!" + name);

        }

        //英国人问好方法

        public static void EnglishGreeting(string name)

        {

            Console.WriteLine("Morning!" + name);

        }

        public static void Greet(string name, GreetDelegate makeGreet)

        {

            makeGreet(name);

        }

  }
</div>
为了加深大家对委托的理解,我们再来写一个相似的例子。

案例2:翻译案例:通过委托将英文翻译为中文和韩文

public delegate void MyTransDelegate(string words);

class Program

    {

        static void Main(string[] args)

        {

            //翻译方法

            //调用方法一

            //2.声明委托

            MyTransDelegate del=new MyTransDelegate(TransToCN);

            //3.调用委托

            del("aa");

//调用方法二

            Translate("aa",TransToCN);

            //调用方式三

            //MyTransDelegate del = TransToCN;

            //del("aa");

             Console.ReadKey();

        }

 

static  void Translate(string str,MyTransDelegate del)

        {

            del(str);

        }

        static void TransToCN(string str)

        {

            Console.WriteLine("翻译成中文了!");

        }

        static void TransToKorean(string str)

        {

            Console.WriteLine("翻译成韩语了!");

        }

}
</div>
通过这个案例,我们可以看出使用委托的方法不止一种,无论使用哪种方式,最终都和方式一一样。通过反编译我们可以证明:

如下图示我通过反编译看到方法二的代码:

 

如下是反编译后方法三的代码

 

有了上述知识存储,我们再来看一个案例:

案例3:通过委托将子窗体中的值传递到父窗体中

如图有父窗体和子窗体两个窗体,现在我想实现当点击父窗体中按钮时弹出子窗体(当然这个超级简单),在弹出子窗体后,在子窗体的文本框中输入内容,点击关闭按钮后子窗体关闭,并且将子窗体中输入的内容在父窗体的文本框中显示。

 

子窗体中代码如下:

        public delegate void Words(string words);

        //声明委托变量

        public Words words;

        private void button1_Click(object sender, EventArgs e)

        {

            words(txtchild.Text);

            this.Close();

        }

父窗体中的代码:

private void btnOpen_Click(object sender, EventArgs e)

        {

   

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28C#实现在匿名方法中捕获外部变量的方法
  • 2017-05-28C#引用类型转换的常见方式总结
  • 2017-05-28C#异步委托调用实例分析
  • 2017-05-28使用aspose.word 第三方的插件实现导出word
  • 2017-05-28C#语音识别用法实例
  • 2017-05-28C#给picturebox控件加图片选中状态的2个方法
  • 2017-05-28C#中实现屏蔽Ctrl+C的方法
  • 2017-05-28C#比较二个数组并找出相同或不同元素的方法
  • 2017-05-28基于C#实现XML文件读取工具类
  • 2017-05-28深入理解C#的数组

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#基于COM方式读取Excel表格的方法
    • 不用IDE写C#的Hello World的方法
    • C#将文件复制到指定文件夹并整理
    • 解析c#在未出现异常情况下查看当前调用堆栈的解决方法
    • C#的回调机制浅析
    • 使用策略模式实现报警服务示例详解(短信报警)
    • C#设置输入法实例分析
    • C#中Params的用法
    • C# 拓展方法的简单实例
    • 详解C#中的string与String

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有