C#编程.函数.委托
2024-10-02 06:45:26
注:委托最重要的用途最讲到事件和事件处理时才能说清,这里先简单介绍一下关于委托的一些内容
委托是一种可以把引用存储为函数的类型。这听起来相当棘手,但其机制是非常简单的。
1)委托的声明非常类似与函数,但不带函数体,且要使用delegate关键字。委托的声明指定了一个返回类型和一个参数列表。
2)再定义了委托之后,就可以声明发委托类型的变量。接着把这个变量初始化为与委托有相同返回类型和参数列表的函数的引用。
3)之后,就可以使用委托变量调用这个函数,就想该变量是一个函数一样。
示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestDelegate
{
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.ReadKey();
}
}
}
执行代码,结果如图所示:
最新文章
- iOS获取网络图片大小
- bzoj3157国王奇遇记(秦九韶算法+矩乘)&;&;bzoj233AC达成
- s5pv210编译qt
- JavaScript基础—插曲
- 由一个异常开始思考springmvc参数解析
- iOS第三方类库JSPatch(热更新)
- tachyon 集群安装
- UML_时序图画法
- hdu2036 (计算多边形的面积)
- ASM时的OFM特性对影的建数据文件名称的影响及为SYSTEM表空间的数据文件使用别名
- Spring源码情操陶冶-AbstractApplicationContext#registerBeanPostProcessors
- 漫谈Java IO之 Netty与NIO服务器
- 分享我编写的powershell脚本:ssh-copy-id.ps1
- less的安装和使用
- HTML5学习总结-番外05 http 状态码
- VueRouter 源码深度解析
- SaltStack 和 Ansible 的简单比较
- DbContextScope,A simple and flexible way to manage your Entity Framework DbContext instances,by mehdime
- hex string 换转
- git branch 命令