`
yutianc
  • 浏览: 20700 次
  • 性别: 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# 委托、父窗体传值到子窗体,DEMO,完整源码

    这个DEMO可能包含了如何在Visual Studio 2010环境下创建一个简单的应用程序,该程序演示了如何使用委托从父窗口(通常是主窗口)向子窗口(弹出或模态对话框)传递数据。 首先,让我们深入了解委托的概念。在C#中,...

    C#委托的使用方法(Demo)

    在C#编程语言中,委托是一种类型,它代表方法的引用。它们允许我们将方法作为参数传递给其他方法,或者将方法存储在变量中以便稍后调用。这为实现事件处理、回调函数以及函数式编程风格提供了基础。下面将详细探讨在...

    C# 委托与事件

    在这个例子中,`Delegates-and-Events-in-CSharp`可能包含一个演示如何在实际代码中使用委托和事件的项目。这个项目可能包含了`Publisher`和`Subscriber`类,它们展示了如何创建、订阅、触发和处理事件。通过实践这...

    C#委托及事件的Demo代码

    在C#编程语言中,委托和事件是两个关键特性,它们是实现面向对象设计模式,尤其是事件驱动编程的基础。本文将深入探讨这两个概念,并通过一个Demo代码实例来演示其用法。 首先,让我们理解什么是委托。在C#中,委托...

    C#多线程委托

    在C#编程中,多线程和委托是两个非常重要的概念,它们对于开发高效、响应式的应用程序至关重要。本文将深入探讨这两个主题,并结合一个简单的Windows Forms应用实例来演示如何使用它们来更新用户界面(UI)。 一、...

    C#面向对象程序设计委托PPT与实例

    **C#面向对象程序设计委托PPT与实例** 在C#编程语言中,委托是一种强大的特性,它允许我们将方法作为参数传递,或者将多个方法捆绑在一起执行,这使得代码更加灵活和可扩展。本资料主要关注C#中的委托概念及其在...

    C#中 委托的详细讲解

    在C#编程语言中,委托是面向对象设计的一个重要特性,它扮演着...在实际项目中,如`zbDelegate.sln`和`zbDelegate`这样的文件可能包含了示例代码,用于演示和练习委托的使用。通过实践,你可以更好地掌握这一核心概念。

    C#利用委托来进行窗体通信

    本文将深入探讨如何利用委托来实现在C#窗体间的通信,并通过一个实例来演示其工作原理。 首先,理解委托的基本概念。委托在C#中类似于函数指针,它可以指向一个或多个具有相同签名的方法。它们使我们能够创建事件...

    自己做的一个C#委托的例子

    在这个例子中,我们将深入探讨C#委托的工作原理及其应用。 首先,让我们理解什么是委托。在C#中,委托是类的类型,它封装了指向一个或多个具有相同签名的方法的引用。委托可以被看作是事件处理程序的基石,因为它们...

    C# 代理 委托 事件 反射.pdf

    ### C#中的代理、委托、事件与反射 #### 一、泛型委托 在C#中,泛型委托是一种非常有用的特性,它允许我们创建能够处理多种数据类型的委托。通过泛型委托,开发者可以在不重复代码的情况下实现对不同类型的处理。 ...

    C# 委托的例子-快速理解委托

    接下来,让我们通过一个实际的例子来演示如何声明、实例化和使用委托。假设我们有一个简单的计算任务,需要执行加法或乘法操作,我们可以创建两个方法: ```csharp int Add(int a, int b) => a + b; int Multiply...

    c#事件+委托+属性的最好实例代码.txt

    这段代码展示了如何在类中定义属性、委托和事件,并通过一个具体的示例来演示它们之间的交互。 ### 属性(Properties) 在代码中,`ѧ` 类定义了两个属性:`NAME` 和 `SCORE`。`NAME` 是一个只读属性,表示学生的...

    C# 面试题源代码大全\一个简单的委托.rar

    在C#编程语言中,委托(Delegate)是一个强大的特性,它允许我们把方法作为参数传递,或者简单地说,就是“函数指针...通过分析这个代码,开发者可以加深对C#委托的理解,并在实际项目中更加灵活地使用这个强大的工具。

    C# 委托和线程管理程序

    `CS_threadTest`很可能包含了一个演示如何使用委托和线程处理数据的示例。在这个项目中,你可能会看到以下内容: 1. 一个委托类型,用于封装数据处理方法。 2. 使用`Thread`或`ThreadPool`启动新线程,处理数据。 3...

    C# 委托方法原代码示例

    下面我们将深入探讨C#委托的原理,通过实例代码来理解其工作方式。 首先,我们需要了解什么是委托类型。C#中的委托类型是通过`delegate`关键字定义的,它类似于函数指针,但更安全,因为它们是类型安全的。声明一个...

    C#入门演示文稿 ppt

    【C#入门演示文稿PPT】是一份专为初学者设计的教程资源,旨在帮助新接触编程语言C#的人快速掌握基础知识。C#(读作"C Sharp")是由微软公司开发的一种面向对象的编程语言,它在.NET框架下运行,广泛应用于Windows...

    c#委托和事件简单示例

    本文将深入探讨C#中的委托和事件,并通过一个简单的示例进行演示。 ### 1. 委托(Delegates) **概念**:委托在C#中相当于一种类型安全的函数指针,它可以引用一个或多个方法。委托可以作为参数传递给方法,也可以...

    c#委托和事件的讲解

    ### C#中的委托和事件详解 #### 2.1 理解委托 **2.1.1 将方法作为方法的参数** 首先,我们通过一个简单示例来理解将方法作为方法参数的概念。考虑一个场景,我们有一个`GreetPeople`方法用于向某人打招呼。该方法...

Global site tag (gtag.js) - Google Analytics