• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 深入理解C#中常见的委托

深入理解C#中常见的委托

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了深入理解c#,深入理解c#第3版pdf,深入理解c#中的xml,c#多态的理解,c#接口理解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的。
关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微。我就不用多废话了。
今天我要说的是C#中的三种委托方式:Func委托,Action委托,Predicate委托以及这三种委托的常见使用场景。
Func,Action,Predicate全面解析
首先来说明Func委托,通过MSDN我们可以了解到,Func委托有如下的5种类型:

///Func<TResult>的用法
///这里TResult代表函数的返回值类型
///只能代理返回值为TResult类型的无参函数
Func<string> func = delegate()
{
    return "我是Func<TResult>委托出来的结果";
};
Console.WriteLine(func());
Console.ReadKey();
///Func<T,TResult>的用法
///这里的T为代理的函数的传入类型,TResult代表函数的返回值类型
///只能代理参数为T类型,返回值为TResult类型的函数
Func<string, string> funcOne = delegate(string s)
{
    return s.ToUpper();
};
Console.WriteLine(funcOne("我是Func<T,TResult>委托出来的结果"));
Console.ReadKey();
///Func<T1,T2,TResult>的用法
///这里T1,T2为代理的函数的传入类型,TResult代表函数的返回值类型
///只能代理参数为T1,T2类型,返回值为TResult类型的函数
Func<string, string, string> funcTwo = delegate(string value1, string value2)
{
    return value1 + " " + value2;
};
Console.WriteLine(funcTwo("我是", "Func<T1,T2,TResult>委托出来的结果"));
Console.ReadKey();
#endregion
</div>
上面代码中,我用了匿名方法来代替函数,其中delegate()代表无参函数,delegate(string s)代表有一个传入参数的函数,以下的以此类推。

然后需要说明的就是Action委托,这个委托也是非常常用的,尤其是在涉及到线程和界面交互的时候,配合着lamada表达式使用,非常方便的实现二者的交互。后面我会提到用法。
来看看Action委托的几种表现形式:

///Func<TResult>的用法
///这里TResult代表函数的返回值类型
///只能代理返回值为TResult类型的无参函数
Func<string> func = delegate()
{
    return "我是Func<TResult>委托出来的结果";
};
Console.WriteLine(func());
Console.ReadKey();
///Func<T,TResult>的用法
///这里的T为代理的函数的传入类型,TResult代表函数的返回值类型
///只能代理参数为T类型,返回值为TResult类型的函数
Func<string, string> funcOne = delegate(string s)
{
    return s.ToUpper();
};
Console.WriteLine(funcOne("我是Func<T,TResult>委托出来的结果"));
Console.ReadKey();
///F

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入理解C♯ 7.0中的Tuple特性
  • 深入理解C# DateTime日期格式化
  • 深入理解C#的数组
  • 深入理解C#中的Delegate
  • 深入理解C#中new、override、virtual关键字的区别
  • 深入理解C#中常见的委托

相关文章

  • 2017-05-28C#实现程序开机启动的方法
  • 2017-05-28C#解决汉诺塔问题DEMO
  • 2017-05-28DevExpress之ChartControl创建Drill-Down样式的Title实例
  • 2017-05-28.net中前台javascript与后台c#函数相互调用问题
  • 2017-05-28C# WinForm打开PDF文件并在窗体中显示
  • 2017-05-28基于C# 生成Zip压缩包代码
  • 2017-05-28C#检查foreach判读是否为null的方法
  • 2017-05-28C#调用和实现WebService,纯手工打造!
  • 2017-05-28C#实现将窗体固定在显示器的左上角且不能移动的方法
  • 2017-05-28C#实现简单的汽车租赁系统

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#图像处理之木刻效果实现方法
    • C#探秘系列(三)——StackTrace,Trim
    • C#图像透明度调整的方法
    • C#中如何使用 XmlReader 读取XML文件
    • C++调用C#的DLL程序实现方法
    • 基于C#实现XML文件读取工具类
    • C#生成指定范围内的不重复随机数
    • C#6 null 条件运算符
    • DevExpress设置TreeList图片节点背景色的方法
    • winform简单缓存类实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有