- 浏览: 119856 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
ulric:
第一个函数的for循环应该从0开始
判断一个字符串是否为回文 -
ocaicai:
c语言的影子比较重啊!呵呵O(∩_∩)O~
java实现约瑟夫环问题 -
烟的傀儡:
通俗易懂!!太棒了
java实现约瑟夫环问题 -
eachcan:
中等什么意思?非常小是多大?写文章请负点责任。
基础知识:MySQL数据类型及列类型 (1) -
rorely:
谢谢,少加了一个条件。呵呵。更正好了
编程实现“加3减3乘3除3”
委托是一种动态调用函数的方式,通过委托可以将一些相同类型的函数串联起来依次执行。委托是函数回调和事件机制的基础。
委托,通过delegate关键字来声明,通过new,+=,-=运算符为其分配函数。
delegate void StrParaFunc(int no,string str);//定义一个委托,没有返回值,依次包含两个数据类型为int和string的参数
委托,通过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
**********************
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
**********************
发表评论
-
程序结构--the beginning of learning CSharp
2009-10-25 14:46 0属性文件夹Properties 引用文件夹:提供项目中引用到的 ... -
C# 各种数据类型的最大值和最小值常数
2009-10-25 16:01 0<!--<br /> <br /> ... -
foreach遍历数组元素
2009-10-25 16:22 0<!--<br /> <br /> ... -
C# 类属性的访问器,get与set的定义
2009-10-25 18:50 0<!--<br /> <br /> ... -
C# 类属性的访问器,get与set传统做法,同java
2009-10-25 18:52 0<!--<br /> <br /> ... -
C#类索引器的使用
2009-10-25 22:51 0<!--<br /> <br /> ... -
静态成员
2009-10-25 23:13 0静态成员通过点运算符来访问,但是不能通过对象访问,只能通过类名 ... -
继承,用冒号实现
2009-10-25 23:33 0■构造顺序:子类对象在创建时,构造函数的调用顺序是:首先调用父 ... -
C# 函数重载
2009-10-26 14:07 0方法重载,在C#中通过虚函数来实现,具体做法:现在父类中用vi ... -
C# 函数覆盖
2009-10-26 15:57 0覆盖类成员:通过new关键字修饰虚函数表示覆盖该虚函数。 一个 ... -
C#函数委托
2009-10-26 15:59 0委托是一种动态调用函数的方式,通过委托可以将一些相同类型的函数 ... -
C#事件
2009-10-26 16:31 0■事件:事件是一种函数回调机制,它通过委托来实现函数回调。 使 ... -
C# 接口
2009-10-26 18:21 0■接口:使用关键字inte ... -
C#异常
2009-10-26 18:47 0<!--<br /> <br /> ... -
异常类Exception
2009-10-26 19:06 0<!--<br /> <br /> ... -
C# 匿名类的定义
2009-10-26 20:00 0■匿名类:匿名类用来表示临时使用的只读数据,所以必须在创建时初 ... -
程序结构--the beginning of learning CSharp
2009-10-25 14:46 500属性文件夹Properties 引用文件夹:提供项目中引用到的 ... -
C# 各种数据类型的最大值和最小值常数
2009-10-25 16:01 2849<!--<br /> <br /> ... -
foreach遍历数组元素
2009-10-25 16:22 747<!--<br /> <br /> ... -
C# 类属性的访问器,get与set的定义
2009-10-25 18:50 1642<!--<br /> <br /> ...
相关推荐
详解 C# 委托、事件与回调函数 委托是 C# 中一种非常重要的概念,它可以将方法作为参数传递给其他方法,也可以将方法作为返回值返回给其他方法。委托的定义是:delegate 返回类型 委托名(参数列表);例如:...
【C#函数编程详解】 函数式编程是一种编程范式,它强调使用函数作为核心构建块,将计算视为函数的组合,而不是状态的变化或指令的序列。近年来,由于其简洁、可读性强和易于并行处理的特点,函数式编程在IT行业中...
在C#编程语言中,委托(Delegate)是一种强大的特性,它允许我们把方法作为参数传递,或者存储在变量中,从而实现回调函数和事件处理。本文将深入探讨C#委托的概念、用途、类型以及如何使用`DynamicInvoke`方法。 #...
本资源包含了"C#_函数手册大全+c#公共函数",旨在为开发者提供全面的C#函数参考资料。下面我们将详细探讨这两个文档可能涵盖的关键知识点。 一、C#函数基础 1. 函数定义:C#中的函数通过`void FunctionName(params)...
C#引入了委托(Delegate)的概念,而C++则依赖于回调函数(Callback Function)来实现类似的功能。这两者都是为了实现异步操作或者在不同组件之间传递控制权。本文将深入探讨C#中的委托以及C++中的回调函数,并阐述...
- C++的函数指针在C#中可以使用委托(Delegate)来表示。 - C++的虚函数在C#中对应为接口(Interface)或抽象类(Abstract Class)。 - C++的模板函数无法直接转换,可能需要创建多个C#方法来模拟。 4. **DLL互...
以下是对C#函数的一些详细说明: 1. **函数定义**: 在C#中,函数定义以`public`、`private`等访问修饰符开始,接着是返回类型,然后是函数名,最后是括号内的参数列表。例如: ```csharp public int Add(int a,...
1. **委托(Delegate)**:C#中的委托是类型安全的函数指针,可以存储一个或多个方法的引用。创建一个委托类型,然后实例化委托对象并将其指向一个或多个方法,这样就可以在适当的时候调用这些方法。例如: ```...
在.NET框架中,C#语言提供了强大的特性来处理异步编程,其中委托和回调函数是核心部分。本文将深入探讨C#中的委托和回调函数,以及如何在多线程环境中应用它们。 首先,理解委托的概念至关重要。委托在C#中相当于...
"C#函数手册级代码解析"是一个深入理解C#函数和代码实现的重要资源,它旨在帮助开发者更高效地理解和运用C#语言中的函数和代码结构。 C#中的函数是可重用的代码块,它们执行特定的任务,并可能接收参数以定制其行为...
本文将详细解析"C#函数方法集",帮助开发者掌握C#中的常用函数和方法。 1. **基础函数与方法** C#的基础函数包括数学运算、字符串操作、数组处理等。例如,`Console.WriteLine()`用于在控制台输出文本,`Math`类...
委托在C#中类似于函数指针,但更加安全且类型安全。它定义了一种调用方法的签名,可以存储指向该签名匹配的方法的引用。这样,我们就可以在运行时动态地决定执行哪个方法。例如,在事件处理中,我们可以创建一个委托...
在C#编程中,异步委托是实现非阻塞式编程的关键工具,它允许我们启动一个操作并在不等待其完成的情况下继续执行其他任务。本文将深入探讨四个关键步骤,帮助你理解和掌握C#异步委托的使用。 1. **简单的异步委托** ...
回调函数在C#中可以通过委托来实现,但使用Lambda表达式或匿名方法来定义回调会更加常见。例如,可以定义一个回调委托,并在某个方法中使用它: ```csharp public delegate void Callback(int param); public void ...
委托在C#中类似于函数指针,它允许我们存储一个或多个方法的引用,并在稍后调用这些方法。事件则是委托的一种特殊应用,用于在对象之间传递通知,遵循发布/订阅模式,即一个对象(发布者)触发事件,其他对象(订阅...
下面是一个简单的回调函数示例,演示如何在C#中使用委托和回调: ```csharp using System; public delegate void MyCallback(int result); public class CallbackDemo { public static void ExecuteCalculation...
在编程领域,回调函数和委托是C#中两个非常重要的概念,它们对于构建灵活和可扩展的代码结构至关重要。本文将深入探讨这两个概念,并通过源码分析帮助初学者更好地理解和运用。 首先,让我们来理解一下回调函数。回...
在C#编程中,有时我们需要确保函数在一定时间内完成其执行,否则可能因为长时间阻塞导致应用程序无响应或性能下降。本示例将探讨如何在C#中实现函数的超时处理,特别是在WPF(Windows Presentation Foundation)应用...
委托在.NET框架中可以被看作是类型安全的函数指针。它提供了一种将方法作为参数传递给另一个方法的方式。通常,委托用于定义回调方法,事件处理程序或在运行时动态地绑定方法。委托通过引用方法的签名(返回类型和...