15. C# -- 委托

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    //委托: 它把引用存储为函数的类型; 多用于事件及事件的处理;
    //委托声明不带函数体;使用delegate关键字;需要知道一个返回类型和一个参数列表;
    class Program
{
        //声明一个委托
        delegate double ProcessDelegate(double param1,double param2);
        static double Multiply(double param1, double param2)
{
            return param1 * param2;
}
        static double Divide(double param1,double param2)
{
            return param1 / param2;
}
        static void Main(string [] args)
{
            //定义一个委托
            ProcessDelegate process;
            Console.WriteLine("Enter 2 numbers separated with a comma:");
            string input = Console.ReadLine();
            int commaPos = input.IndexOf(‘,‘);
            double param1 = Convert.ToDouble(input.Substring(0, commaPos));
            double param2 = Convert.ToDouble(input.Substring(commaPos + 1, input.Length - commaPos - 1));
            Console.WriteLine("Enter M to multiply or D to divide:");
            input = Console.ReadLine();
            //调用委托
            if (input == "M")
                process = new ProcessDelegate(Multiply);
            else
                process = new ProcessDelegate(Divide);

            Console.WriteLine("result :{0}",process(param1,param2));
            Console.ReadLine();
}
}
}
时间: 2024-10-11 22:17:35

15. C# -- 委托的相关文章

C#forUnity快速入门(连载15)_C#委托与事件

C# for Unity编程语言快速入门教程(连载15)_C#委托与事件 C#的委托(delegate)与事件(event)  其实不是一个容易理解的技术,而且很多C#书籍作者还经常把它与"观察者设计模式"(Observer模式)放在一起进行讨论(注:因为委托与事件是"Observer"设计模式的一种很好的实现方式),其实这就进一步增加了对于C#初学者的学习难度. 所以笔者打破常规,先从讲故事的方式,先来介绍"委托". 案例故事:"老板

.NET基础 (15)委托

委托1 请解释委托的基本原理2 委托回调静态方法和实例方法有何区别3 什么是链式委托4 链式委托的执行顺序是怎么样的5 可否定义拥有返回值的方法的委托链6 委托通常可以应用在哪些场合 委托1 请解释委托的基本原理 委托是一个钟数据类型,用来传递方法.委托类型继承自System.Delegate,自定义委托类型都直接继承自System.NulticastDelegate,System.NulticastDelegate又继承自System.Delegate.每个委托至少包含一个指向某个方法的指针,

C#学习(五)之委托浅探

这一周章老师又讲授了许多知识,本次学习记录就主要探究我非常感兴趣的委托机制.  delegate是表示对具有特定参数列表和返回类型的方法的引用的类型. 在实例化委托时,我们可以将其实例与任何具有兼容签名和返回类型的方法相关联. 我们可以通过委托实例调用方法.委托用于将方法作为参数传递给其他方法. 事件处理程序就是通过委托调用的方法. 我们可以创建一个自定义方法,当发生特定事件时,某个类(如 Windows 控件)就可以调用我们的方法.它其实类似于C++中指向函数指针.一个委托声明示例演示如下:

0505.Net基础班第二十二天(委托、XML和播放器项目)

01索引器 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace _01索引器 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Person p = new Person(); 14 p

C#基础加强篇----委托、Lamada表达式和事件(上)

1.委托 C#的委托相当于C/C++中的函数指针.函数指针用指针获取一个函数的入口地址,实现对函数的操作. 委托与C/C++中的函数指针不同在于,委托是面向对象的,是引用类型,对委托的使用要先定义后实例化,最后才能调用.并且委托是类型安全的,它定义了返回类型和参数的类型,而在C/C++中,函数指针只是一个指向内存位置的指针,它不是类型安全的,我们无法判断这个指针实际指向什么,所以参数和返回类型等项就无法知道了. 定义委托 使用关键字delegate.语法类似于方法的定义,但没有方法体,定义的前面

委托、 Lambda表达式和事件——Lambda表达式

1 /* 2 * 由SharpDevelop创建. 3 * 用户: David Huang 4 * 日期: 2015/7/30 5 * 时间: 16:32 6 */ 7 using System; 8 9 namespace Lambda 10 { 11 class Program 12 { 13 public static void Main(string[] args) 14 { 15 //匿名委托 16 Func<int,int> Del0=delegate(int i) 17 { 18

多线程的秘密

一.线程的定义  1. 1 进程.应用程序域与线程的关系 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的.进程可以理解为一个程序的基本边界. 应用程序域(AppDomain)是一个程序运行的逻辑区域,它可以视为一个轻量级的进程,.NET的程序集正是在应用程序域中运行的

[转]C#综合揭秘——细说多线程(上)

C#综合揭秘——细说多线程(上) 引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发.其中委托的BeginInvoke方法以及回调函数最为常用.而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作.特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel.其实合理使用I/O线程在通讯项目或文件下载时,能尽可能地减少IIS的压力.并行编程

【转】C#综合揭秘——细说多线程(上)

C#综合揭秘——细说多线程(上) 风尘浪子 只要肯努力,梦想总有一天会实现 引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发.其中委托的BeginInvoke方法以及回调函数最为常用.而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作.特别是在ASP.NET开发当中,可能更多人只会留意在客户端 使用Ajax或者在服务器端使用UpdatePanel.其实合理使用I/O线程在通讯项目或文件