C# 3.0 / C# 3.5 系统内置委托
内置委托的定义声明:
System.Func,代表有返回类型的委托:
public delegate TResult Func<out TResult>();
public delegate TResult Func<in T, out TResult>(T arg);
……
注:输入泛型参数 -in 最多可以有16个,输出泛型参数 -out 只有一个。
System.Action,代表无返回类型的委托:
public delegate void Action();
public delegate void Action<in T>(T obj); //list.Foreach
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
……
注:最多有 16 个参数(全是输入参数)。
Func / Action 委托使用可变性:
Action<object> test = delegate (object o) { Console.WriteLine(o); };
Action<string> test2 = test; Func<string> fest = delegate () { return Console.ReadLine(); };
Func<string> fest2 = fest;
协变指的是:委托方法的返回值类型 直接或间接继承自委托签名的返回值类型,
逆变则是:参数类型继承自委托方法的参数类型。
其他系统内置委托:
public delegate bool Predicate<in T>(T obj); //list.Find
public delegate int Comparison<in T>(T x, T y); //list.Sort
System.Predicate<T> 代表返回 bool 类型的委托,用作执行表达式。
System.Comparison<T> 代表返回 int 类型的委托,用于比较两个参数的大小。
为什么要定义这么多简单的委托? 方便!
C# 3.0 / C# 3.5 系统内置委托的更多相关文章
- C#中常用的系统内置委托
在公共语言运行时(CLR)环境中系统为我们内置了一些常用的委托,包括Action类的委托.Func类的委托.Predicate<T>委托.Comparison<T>委托等等.以 ...
- .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)
1.自动属性 Auto-Implemented Properties 2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...
- C#中常见的系统内置委托用法详解(抄录)
C#中常见的系统内置委托 Action类.Func类.Predicate<T>.Comparison<T>委托 Action类的委托 Action委托 封装一个方法,该方法不具 ...
- 系统内置委托Action和func
Action委托, action是系统内置的委托,它可指向无返回值,没有参数的方法. using System; using System.Collections.Generic; using Sys ...
- 系统内置委托:Func/Action
lSystem.Func 代表有返回类型的委托 lpublic delegate TResult Func<out TResult>(); lpublic delegate TResul ...
- .NET (三)委托第三讲:内置委托Action
.NET 为我们提供了无返回值的内置委托 Action,代码如下: // 摘要: // 封装一个方法,该方法只有一个参数并且不返回值. // // 参数: // obj: // 此委托封装的方法的参数 ...
- java 日志脱敏框架 sensitive-v0.0.4 系统内置常见注解,支持自定义注解
项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.编写起来又特别麻烦. 本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发. 特性 基于注解的日志脱敏. 可 ...
- Java日志脱敏框架 sensitive-v0.0.4 系统内置常见注解,支持自定义注解
项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.编写起来又特别麻烦. 本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发. 特性 基于注解的日志脱敏. 可 ...
- Android 4.4中AudioRecord用例 - 录制系统内置声音
通过API 19新加的MediaRecorder.AudioSource.REMOTE_SUBMIX參数能够让系统App录制系统内置的声音,也就是扬声器的声音.以下是一个巨简单的样例来演示样例怎样通过 ...
随机推荐
- 7、nginx的upstream及fastcgi模块应用
ngx_http_proxy_module, ngx_http_upstream_module ngx_http_proxy_module:实现反向代理及缓存功能 proxy_pass http: ...
- 爬虫系列之requests
爬取百度内容: import requests url = "https://www.baidu.com" if __name__ == '__main__': try: kv = ...
- spring读取bean有几种方式
bean加载到spring的方式: 第一种:xml 第二种:注释「一定要配合包扫描」: <context:component-scan base-package="Cristin.Co ...
- 每日质量NPM包拖拽文件上传_react-dropzone
一.react-dropzone 官方定义: Simple HTML5-compliant drag'n'drop zone for files built with React.js. 理解: 一个 ...
- python中网络编程基础
一:什么是c\s架构 1.c\s即client\server 客户端\服务端架构. 客户端因特定的请求而联系服务器并发送必要的数据等待服务器的回应最后完成请求 服务端:存在的意义就是等待客户端的请求, ...
- Django与CSRF 、AJAX
CSRF(Cross-site request forgery)跨站请求伪造,是一种常见的网络攻击手段,具体内容和含义请大家自行百度. Django为我们提供了防范CSRF攻击的机制. 一.基本使用 ...
- Spark Streaming笔记
Spark Streaming学习笔记 liunx系统的习惯创建hadoop用户在hadoop根目录(/home/hadoop)上创建如下目录app 存放所有软件的安装目录 app/tmp 存放临时文 ...
- Codeforces 833 C - Ever-Hungry Krakozyabra
思路: 首先,inedible tails 的个数最多为C(18+9,9)个(用隔板法),所以我们暴力出所有的 inedible tails,然后检查一下在[L, R]这段区间是否存在这个inedib ...
- ThinkPHP实用项
跟踪信息 – 两种模式 – Sql调试 – 性能调试
- [Spring] Annotation注释
自动扫描: 在<beans>标签内, <context:annotation-config />允许使用注解 <context:component-scan base-p ...