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

C#函数委托

阅读更多
委托是一种动态调用函数的方式,通过委托可以将一些相同类型的函数串联起来依次执行。委托是函数回调和事件机制的基础。
委托,通过delegate关键字来声明,通过new,+=,-=运算符为其分配函数。
delegate void StrParaFunc(int no,string str);//定义一个委托,没有返回值,依次包含两个数据类型为int和string的参数

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace useDelegate
{
    
class Program
    {
        
/// <summary>
        /// 定义委托
        /// </summary>
        /// <param name="no"></param>
        /// <param name="str"></param>
        delegate void StrParaFunc(int no, string str);

        
static void PrintString(int no, string str) {
            System.Console.WriteLine(
"{0}:PrintString:{1}",no,str);
        }
        
static void ShowString(int no, string str)
        {
            System.Console.WriteLine(
"{0}:ShowString:{1}", no, str);
        }
        
static void Main(string[] args)
        {
            
//通过new初始化委托
            System.Console.WriteLine("**********************");
            StrParaFunc spfHandler1 
= new StrParaFunc(PrintString);
            System.Console.WriteLine(
"第一个委托对象,有1个引用函数:");
            spfHandler1(
1,"a string 1");//委托类型中有一个引用函数,结果有1个    
            System.Console.WriteLine("**********************");
            
            spfHandler1 
+= ShowString;//通过+=增加引用函数
            System.Console.WriteLine("第一个委托对象,增加了一个引用函数,共2个引用函数:");
            spfHandler1(
2,"a string 2");//委托中有两个引用函数,结果有2个       
            System.Console.WriteLine("**********************");

            spfHandler1 
-= PrintString; //通过-=移除引用函数      
            System.Console.WriteLine("第一个委托对象,减少了一个引用函数,剩1个引用函数:");
            spfHandler1(
3"a string 3"); //委托中有一个引用函数,结果1个
            System.Console.WriteLine("**********************");

            
//通过函数地址直接初始化委托
            StrParaFunc spfHandler2 = PrintString;
            spfHandler2(
4"a string 4");
            System.Console.WriteLine(
"**********************");
            System.Console.ReadLine();
        }
    }
}

运行结果:

**********************
第一个委托对象,有1个引用函数:
1:PrintString:a string 1
**********************
第一个委托对象,增加了一个引用函数,共2个引用函数:
2:PrintString:a string 2
2:ShowString:a string 2
**********************
第一个委托对象,减少了一个引用函数,剩1个引用函数:
3:ShowString:a string 3
**********************
4:PrintString:a string 4
**********************



分享到:
评论

相关推荐

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

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

    C# 的函数编程详解

    【C#函数编程详解】 函数式编程是一种编程范式,它强调使用函数作为核心构建块,将计算视为函数的组合,而不是状态的变化或指令的序列。近年来,由于其简洁、可读性强和易于并行处理的特点,函数式编程在IT行业中...

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

    在C#编程语言中,委托(Delegate)是一种强大的特性,它允许我们把方法作为参数传递,或者存储在变量中,从而实现回调函数和事件处理。本文将深入探讨C#委托的概念、用途、类型以及如何使用`DynamicInvoke`方法。 #...

    C#_函数手册大全+c#公共函数

    本资源包含了"C#_函数手册大全+c#公共函数",旨在为开发者提供全面的C#函数参考资料。下面我们将详细探讨这两个文档可能涵盖的关键知识点。 一、C#函数基础 1. 函数定义:C#中的函数通过`void FunctionName(params)...

    C#委托与C++回调函数处理

    C#引入了委托(Delegate)的概念,而C++则依赖于回调函数(Callback Function)来实现类似的功能。这两者都是为了实现异步操作或者在不同组件之间传递控制权。本文将深入探讨C#中的委托以及C++中的回调函数,并阐述...

    C++结构体/函数定义转换C#函数定义/结构体

    - C++的函数指针在C#中可以使用委托(Delegate)来表示。 - C++的虚函数在C#中对应为接口(Interface)或抽象类(Abstract Class)。 - C++的模板函数无法直接转换,可能需要创建多个C#方法来模拟。 4. **DLL互...

    c#函数使用说明

    以下是对C#函数的一些详细说明: 1. **函数定义**: 在C#中,函数定义以`public`、`private`等访问修饰符开始,接着是返回类型,然后是函数名,最后是括号内的参数列表。例如: ```csharp public int Add(int a,...

    C# 实现回调函数

    1. **委托(Delegate)**:C#中的委托是类型安全的函数指针,可以存储一个或多个方法的引用。创建一个委托类型,然后实例化委托对象并将其指向一个或多个方法,这样就可以在适当的时候调用这些方法。例如: ```...

    c#委托回调函数

    在.NET框架中,C#语言提供了强大的特性来处理异步编程,其中委托和回调函数是核心部分。本文将深入探讨C#中的委托和回调函数,以及如何在多线程环境中应用它们。 首先,理解委托的概念至关重要。委托在C#中相当于...

    C#函数手冊级代码解析

    "C#函数手册级代码解析"是一个深入理解C#函数和代码实现的重要资源,它旨在帮助开发者更高效地理解和运用C#语言中的函数和代码结构。 C#中的函数是可重用的代码块,它们执行特定的任务,并可能接收参数以定制其行为...

    C#函数方法集,汇总c#.net常用函数和方法集

    本文将详细解析"C#函数方法集",帮助开发者掌握C#中的常用函数和方法。 1. **基础函数与方法** C#的基础函数包括数学运算、字符串操作、数组处理等。例如,`Console.WriteLine()`用于在控制台输出文本,`Math`类...

    C#控件委托类库

    委托在C#中类似于函数指针,但更加安全且类型安全。它定义了一种调用方法的签名,可以存储指向该签名匹配的方法的引用。这样,我们就可以在运行时动态地决定执行哪个方法。例如,在事件处理中,我们可以创建一个委托...

    C# 异步委托 四步走

    在C#编程中,异步委托是实现非阻塞式编程的关键工具,它允许我们启动一个操作并在不等待其完成的情况下继续执行其他任务。本文将深入探讨四个关键步骤,帮助你理解和掌握C#异步委托的使用。 1. **简单的异步委托** ...

    19.C#中委托、事件和回调函数的理解.pdf

    回调函数在C#中可以通过委托来实现,但使用Lambda表达式或匿名方法来定义回调会更加常见。例如,可以定义一个回调委托,并在某个方法中使用它: ```csharp public delegate void Callback(int param); public void ...

    C# 事件委托简单封装示例

    委托在C#中类似于函数指针,它允许我们存储一个或多个方法的引用,并在稍后调用这些方法。事件则是委托的一种特殊应用,用于在对象之间传递通知,遵循发布/订阅模式,即一个对象(发布者)触发事件,其他对象(订阅...

    C#回调函数

    下面是一个简单的回调函数示例,演示如何在C#中使用委托和回调: ```csharp using System; public delegate void MyCallback(int result); public class CallbackDemo { public static void ExecuteCalculation...

    C#回调函数委托源码

    在编程领域,回调函数和委托是C#中两个非常重要的概念,它们对于构建灵活和可扩展的代码结构至关重要。本文将深入探讨这两个概念,并通过源码分析帮助初学者更好地理解和运用。 首先,让我们来理解一下回调函数。回...

    C#函数超时执行事例

    在C#编程中,有时我们需要确保函数在一定时间内完成其执行,否则可能因为长时间阻塞导致应用程序无响应或性能下降。本示例将探讨如何在C#中实现函数的超时处理,特别是在WPF(Windows Presentation Foundation)应用...

    C#中委托与事件的区别

    委托在.NET框架中可以被看作是类型安全的函数指针。它提供了一种将方法作为参数传递给另一个方法的方式。通常,委托用于定义回调方法,事件处理程序或在运行时动态地绑定方法。委托通过引用方法的签名(返回类型和...

Global site tag (gtag.js) - Google Analytics