`
yutianc
  • 浏览: 19866 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

C#委托演示

    博客分类:
  • C#
阅读更多
同样都能用来分离方法【声明】和【实现】
何时用委托,何时用接口,这是个暂时还没搞明白的问题。

可能有一些情况用委托方便,而用接口则比较麻烦。
比如,在同一个类中,需要实现方法的多个版本。
这时候,用委托可以方便的实现多个接口相同的方法,送给委托调用;而接口就有点不方便了。

下面做了一个简单的演示用窗口程序。
using System;
using System.Collections.Generic;
using System.Text;

namespace myFormApp.lib
{
    class Class1
    {
        //委托声明
        public delegate void outputMsg(string message);

        public void dealWithError(String strMsg,outputMsg inDel)
        {
            /*
             *TODO 错误处理逻辑是演示用的控制台打印
             */
            System.Console.WriteLine("dealwith error!");

            //用传递进来的错误信息打印方法答应信息。
            //但是此处不意识具体的信息输出方式。
            inDel(strMsg);
        }
    }
}


做一个窗口程序,点击按钮时调用上面的错误处理程序Class1
using System;
using System.Text;
using System.Windows.Forms;
using myFormApp.lib;
using System.IO;

namespace myFormApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //按钮点击触发
        private void button1_Click(object sender, EventArgs e)
        {
            Class1 testObj = new Class1();

          //调用错误处理方法,同时传入putMsgToConsole方法的地址,将信息出到控制台
            testObj.dealWithError("errorMsg to console!", putMsgToConsole);

            //调用错误处理方法,同时传入putMsgToFile方法的地址,将信信息出到文件
            testObj.dealWithError("errorMsg to File!", putMsgToFile);

        }


        //委托的实现方法1,将信息出于控制台
        private void putMsgToConsole(String msg)
        {
            System.Console.WriteLine(msg);
        }

        //委托的实现方法2,将信息出于文件
        private void putMsgToFile(String msg)
        {
            string path = @"D:\TestMsg.log";

           if (!File.Exists(path))
            {
                using (FileStream fs = File.Create(path)) { }
            }

            using (FileStream fs = File.OpenWrite(path))
            {
                Byte[] info =
                    new UTF8Encoding(true).GetBytes(msg);
                fs.Write(info, 0, info.Length);
            }
        }
    }
}

分享到:
评论

相关推荐

    C#委托和串行收发数据

    本实例演示定义委托,并利用委托把来自串口接收到的数据显示在文本框中!熟悉委托的定义和串行数据收发的简单功能!

    C# 委托的简单示例源码

    自己学习C#时,练习委托的简单示例源码 演示委托的声明、用法;委托链的操作;委托作为参数传递给方法调用等。适合初学者!

    C#委托机制测试

    资源演示了如何使用委托事件,验证委托机制的工作原理

    C# 利用委托和事件在窗口间传递参数

    自己写的源代码,以登录后显示新窗口为例,演示了利用利用委托和事件在窗口间传递参数和回传参数。如果想学习Windows Form,这个是很有用滴!

    c++ 与c#的中文字符串传递演示demo

    1.c++编译成dll。 2.c#调用非托管dll,演示中文字符串传递,以及回调的过程。 3.演示中文字符串传递,演示c#与c++的委托回调

    C#中委托用法实例详解

    本文实例讲述了C#中委托用法。分享给大家供大家参考。具体分析如下: 这里演示了如何使用匿名委托来计算员工的薪水奖金。使用匿名委托简化了程序,因为无需再定义一个单独的方法。 (-:The data for each employee is...

    C# 编程指南 C# 随身参考 Wego开发组专用

    包含一些代码段,演示 C# 编译器错误和警告的原因以更正方法。 C# 术语 提供 C# 单词和短语的词汇表。 相关章节 C# 语言规范 提供一些链接,供获取 Microsoft Word 格式的最新版本的 C# 语言规范。 C# 常见问题 ...

    获取所有委托返回值

    如果委托有返回值,直接执行委托,只会返回最后一个方法的返回值。 本实例演示如何获取委托链中所有的返回值。

    C# 3.0完全自学宝典 (F)

    UseDElegate 演示委托的使用 UseException 演示异常的使用 UseInterface 演示接口的使用 第4章(\ch04) 示例描述:介绍C#中常用集合类的使用。 CreateHashTable 演示创建Hash表实例 AddHashItem 演示添加元素...

    匿名方法、委托和Lambda表达式区分演示

    C# 在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。为了区分它们3个咱们创建个演示程序。

    C#4.0权威指南.pd

    全书分为三个部分:准备篇首先对.net体系结构进行了全面的介绍,能帮助所有.net相关技术的读者建立.net的大局观,对初学者尤为重要,接着用简单但完整的示例演示了C#应用程序开发的全过程,能迅速带领读者进入实践...

    C# 4.0权威指南-姜晓东

    全书分为三个部分:准备篇[0首0]先对.net体系结构进行了全面的介绍,能帮助所有.net相关技术的读者建立.net的[0大0]局观,对初[0学0]者尤为重要,接着用简单但完整的示例演示了C#应用程序开发的全过程,能迅速带[0领...

    举例讲解C#编程中委托的实例化使用

    本示例演示如何创建多播委托。 委托对象的一个有用属性是:可以使用 + 运算符将多个对象分配给一个委托实例。多播委托包含已分配委托的列表。在调用多播委托时,它会按顺序调用列表中的委托。只能合并相同类型的委托...

    C#异步编程概述

    本文中的代码演示了使用BeginInvoke和EndInvoke进行异步调用的四种常见调用方式。在调用 BeginInvoke之后,您可以: 1.完成一些其它工作,然后调用EndInvoke,等待异步调用完成。 2.使用IAsyncResult....

    事件与委托简单的演示代码

    简单的委托与事件的案例,主要是通过可视化的界面让你们去更快地理解代码,看过这个小案例的都明白了

    C#生成线程与循环的源码

    C#创建线程与循环的例子,此为演示代码,创建新线程,并创建ThreadStart委托对象,消息传输方法AddMsg,在方法中使用循环实现传输功能,在循环中创建线程,在循环中创建并使用线程,传输一行,并将该行删除,点击...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    john sharp是负责net framework和互操作性问题的专家,已经针对分布式系统、web服务和c#语言发布了大量相关的教程、白皮书和演示文档。他具有丰富 目录 第i部分 visual c#和visual studio 2010概述 第1章 欢迎...

    C#中的delegate委托类型基本学习教程

    下面的示例演示了一个委托声明: public delegate int PerformCalculation(int x, int y); 可将任何可访问类或结构中与委托类型匹配的任何方法分配给委托。该方法可以是静态方法,也可以是实例方法。这样

    带返回值的异步委托和lambada结合

    使用异步委托如何取回返回值的标准做法 该示例演示了在线程和主线程ui界面间操作的方法精髓。

    CLR via C# 3rd Edition

    还包含了一个示例,演示应用程序如何接收第0代或第2代收集发生时的通知。 Chapter 22-CLR Hosting and AppDomains 新增了关于支持在单一进程中加载多个CLR的讨论。新增了关于使用MarshalByRefObject衍生类的性能的...

Global site tag (gtag.js) - Google Analytics