c#委托的使用
c# 委托 使用
2023-09-11 14:19:18 时间
一、什么是委托?
委托是一种动态调用方法的类型,属于引用型。委托是对方法的抽象和封装。委托对象实质上代表了方法的引用(即内存地址)。委托通常是委托某个方法来实现具体的功能。当我们调用委托的时候,委托包含的所有方法将被执行。虽然在定义委托时与方法有些相似,但我们不能将其称为方法。
二、委托的定义
1.delegate
定义一个int返回值、带一个参数的委托:
修饰符 delegate 返回值类型 委托名 ( 参数列表 );
public delegate int TestDelegate(int x, int y);
定义好委托后就到了实例化委托的步骤,命名方法委托在实例化委托时必须带入方法的具体名称。
委托名 委托对象名 = new 委托名 ( 方法名 );
在实例化委托后即可调用委托,语法形式如下。
委托对象名 ( 参数列表 );
delegate例:
class Program
{
public delegate void MyDelegate();
static void Main(string[] args)
{
MyDelegate myDelegate = new MyDelegate(Test.SayHello);
myDelegate();
}
}
class Test
{
public static void SayHello()
{
Console.WriteLine("Hello Delegate!");
}
}
2.Action与Func
Action和Func是系统预定义的委托,所以不需要我们再进行定义了,没有返回值。有两种形式,一种是单独的Action既没有返回值也不可以带参数;另一种是没有返回值,可以带参数的Action<>,参数限制0~16个。Action是无返回值的泛型委托。
Action 表示无参,无返回值的委托。
Action<int,string> 表示有传入参数int,string无返回值的委托。
Func<返回值类型>必须有返回值,不能是void,参数0~16个。
Func<参数1,参数2,返回值类型>必须有返回值和参数,不能是void
Action例:
运行结果:
Func例:
运行结果:
相关文章
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)。 异步委托 微信小程序支付证书及SSL证书使用 SqlServer无备份下误删数据恢复 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中 通过XDocument方式把List写入Xml文件
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- C# IL DASM 使用-破解c#软件方法
- Word处理控件Aspose.Words功能演示:使用 C# 拆分 MS Word 文档
- C#委托的介绍(delegate、Action、Func、predicate)
- C#学习笔记(6)委托
- C#-invoke与sendmessage,findWindow的阻塞实验
- C#程序集系列11,全局程序集缓存
- C# 委托实例(跨窗体操作控件)
- C#(委托同步调用、异步调用、异步回调)
- 【C#进阶3-2】C#委托、事件
- 改善C#程序的建议2:C#中dynamic的正确用法
- C# 委托详解汇总
- 堆排序 -- C#代码实现
- 如何:声明、实例化和使用委托(C# 编程指南)
- C# 委托
- C#参数化(防止SQL注入)