`

C#委托

    博客分类:
  • C#
 
阅读更多
引用
委托,把你所不能做的事情交给其他人去做。而怎么知道是哪个人去做呢?当然是要知道名字!而为了区别名字一样的不同人,因此,需要描述一个特征。
在C#中,委托的作用是这样描述的:委托就像一个函数的指针,在程序运行时可以使用它们来调用不同的函数。这个其实和你委托同事完成 JS代码一样。如果有两位同事可以做这件事情,他们只要做的结果能够满足你的需求(就像一个接口),尽管他们做的过程不一样,并且作出的效果也不一样,但是,能够达到你的要求就可以了。

1-简单的委托
方法名+参数列表(方法签名)+返回的类型。
比如:
delegate stringProcessDelegate(int i);
蓝色部分是声明委托的关键字,
红色部分是返回的类型,
而绿色部分是委托的类型名

你要使做事情的方法必须满足以下条件:
1、返回类型和委托的返回类型一致,这里是string类型;
2、能且只能有一个参数,并且是int类型。
OK,满足以上两个条件,一切就可以工作了:)


 namespace TestApp
  {
      /// <summary>
      /// 委托
      /// </summary>
     /// <param name="s1"></param>
     /// <param name="s2"></param>
     /// <returns></returns>
     public delegate string ProcessDelegate(string s1, string s2);
 
     class Program
     {
         static void Main(string[] args)
         {
             /*  调用方法  */
             ProcessDelegate pd = new ProcessDelegate(new Test().Process);
            Console.WriteLine(pd("Text1", "Text2"));
         }
     }
 
     public class Test
     {
         /// <summary>
         /// 方法
         /// </summary>
         /// <param name="s1"></param>
         /// <param name="s2"></param>
         /// <returns></returns>
         public string Process(string s1,string s2)
         {
             return s1 + s2;
         }
     }
 }


输出的结果是:
Text1Tex2



2、泛型委托
泛型的委托,就是然参数的类型不确定


using System;
using System.Collections.Generic;
using System.Text;

namespace TestApp
{
    /// <summary>
    /// 委托
    /// </summary>
    /// <param name="s1"></param>
    /// <param name="s2"></param>
    /// <returns></returns>
    public delegate string ProcessDelegate<T,S>(T s1, S s2);

    class Program
    {
        static void Main(string[] args)
        {
            /*  调用方法  */
            ProcessDelegate<string,int> pd = new ProcessDelegate<string,int>(new Test().Process);
            Console.WriteLine(pd("Text1", 100));
        }
    }

    public class Test
    {
        /// <summary>
        /// 方法
        /// </summary>
        /// <param name="s1"></param>
        /// <param name="s2"></param>
        /// <returns></returns>
        public string Process(string s1,int s2)
        {
            return s1 + s2;
        }
    }
}


输出的结果就是:
Text1100



0
0
分享到:
评论

相关推荐

    C#委托 C#委托 C#委托

    本文将深入探讨C#委托的概念、用途、类型以及如何使用`DynamicInvoke`方法。 ### 1. 委托的基本概念 委托是C#中的一个类,它封装了指向方法的引用。换句话说,委托就像一个指针,但它指向的是方法而不是内存地址。...

    C#委托与事件

    在C#编程语言中,委托和事件是两个非常重要的概念,它们构成了事件驱动编程的基础。...在实际项目中,结合文档《C#委托与事件.doc》的详细分析,初学者将更好地掌握这些概念,并能够在实践中得心应手。

    C#委托demo C#委托demo

    本文将深入探讨C#委托的概念、用法及其在实际开发中的应用。 一、什么是委托 委托在C#中是一种类型,类似于指针,但更加安全和灵活。它封装了一个或多个方法的引用,可以看作是“方法的句柄”。委托类型由系统定义...

    详解C#委托,事件与回调函数

    详解 C# 委托、事件与回调函数 委托是 C# 中一种非常重要的概念,它可以将方法作为参数传递给其他方法,也可以将方法作为返回值返回给其他方法。委托的定义是:delegate 返回类型 委托名(参数列表);例如:...

    C#委托详解:匿名委托,委托的应用(含源代码)

    例如,`C#委托详解.pdf` 可能详细解释了委托的基本概念、用法以及如何结合匿名委托实现某些功能。而`委托与匿名委托.zip`可能包含了一些示例项目,你可以运行并查看其工作原理。 总的来说,掌握C#中的委托和匿名...

    C# 委托的讲解

    C#委托的概念类似于其他语言中的函数指针,但它更安全、类型安全,并且支持多播,即一个委托可以同时引用多个方法。 首先,我们来深入理解什么是委托。委托在C#中是一种引用类型,它定义了一种方法签名,这个签名...

    C#委托代码样例DelegateDemo

    在C#编程语言中,委托(Delegate)是一种强大的特性,它允许我们把方法作为参数传递,或者存储在变量中...在`DelegateDemo`这个示例项目中,你可能会看到如何在实际代码中应用这些概念,从而加深对C#委托和事件的理解。

    C# 委托简单实例

    在C#编程语言中,委托是一种强大的特性,它允许我们传递方法作为参数或者将方法存储在变量中。这个“C# 委托简单实例”是理解委托概念的基础教程,特别适合初学者入门。该实例的核心是通过委托来实现温度监控,包括...

    C#委托示例代码

    本示例代码将深入探讨C#委托的使用及其重要性。 首先,理解委托的基本概念是至关重要的。在C#中,委托是一种类型,它封装了指向静态或实例方法的指针。这使得我们可以将方法当作其他方法的参数,或者存储在类的字段...

    C#委托解决不同页面的传值问题

    C#委托技术有很多作用,以下是一个简单的实例完成C#委托解决不同对象之间的传值或者方法调用的问题: 假设想想实现以下功能: 从主窗体中创建2个子窗体,想把2个子窗体的信息发送到主窗体中,并在主窗体中显示,在子...

    对C#委托及事件委托的理解

    ### C#委托及事件委托的理解 #### 一、委托的基础概念 在C#中,委托是一种类型,它允许我们封装方法引用。通过这种方式,可以在不同的上下文中调用这些方法,而无需硬编码调用的位置。这类似于C++中的函数指针,但...

    C#委托例子,简单易懂,适合初学者

    本教程将深入探讨C#委托的基本概念、用法及其在实际编程中的应用。 一、委托的定义与声明 在C#中,委托是一种类型,它代表了一个或多个方法的集合。委托的声明类似于类或接口,但使用`delegate`关键字。例如,我们...

    C#委托实例简单分析与应用

    本文将深入探讨C#委托实例,尤其是关于`SimpleDelegate`的使用和`MultiCall`方法的重复调用。 首先,我们要了解什么是委托。在C#中,委托是一个类,它继承自`System.Delegate`,用于封装一个或多个具有相同签名的...

    c#委托的使用简单例子

    标题“c#委托的使用简单例子”暗示我们将探讨如何在实际代码中应用委托。在C# 2005环境下,你可以创建一个Windows应用程序项目,然后使用委托来实现一些功能。虽然这里提到的是VS2005,但同样的概念也适用于后续版本...

    C# 委托技术的使用举例

    本文将深入探讨C#委托的使用,特别关注传统委托和多播委托的实例。 首先,让我们理解什么是委托。委托在C#中相当于一个对象,可以引用一个或多个具有相同签名的方法。它们是类型安全的,因为每个委托类型都与特定的...

    C#委托使用实例入门

    本文将深入探讨C#委托的使用实例,帮助初学者理解并掌握这一核心概念。 首先,理解委托的基本概念是至关重要的。在C#中,委托是一种类型,它代表了一个方法的签名。这意味着,当创建一个委托实例时,我们实际上是...

    C#委托的另一种写法

    接下来,我们将基于提供的代码片段深入分析C#委托的另一种实现方式,并讨论其实现原理及其应用场景。 ### 委托的基本概念 委托在C#中是一种引用类型的数据结构,它定义了方法的类型,使得可以将方法当作另一个方法...

    C#委托使用方法

    ### C#委托使用方法 #### 一、委托概念与作用 在C#中,委托是一种引用类型的数据结构,它允许将方法作为参数进行传递。简而言之,委托就是对函数的引用,它使得代码能够更加灵活地处理回调、事件驱动等场景。通过...

    详解C#委托,事件,Observer设计模式

    ### 详解C#委托,事件,Observer设计模式 在C#编程中,了解并掌握委托、事件以及Observer设计模式对于构建高效、灵活的应用程序至关重要。本文将深入探讨这些概念,并通过具体的示例来帮助理解。 #### 1. 将方法...

Global site tag (gtag.js) - Google Analytics