C#常用的内置委托
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 内置委托
{
static class Program
{
static void Main(string[] args)
{
}
static List<Person> GetPersonList()
{
return new List<Person>() {
new Person (){ Age =1,Name ="小白01"},
new Person (){Age =2,Name ="小白02"},
new Person (){Age =3,Name ="小白03"}
};
}
#region 1、 Action
/// <summary>
/// 系统泛型委托--无返回值(用来传递无返回值方法)
/// </summary>
static void TestAction()
{
List<Person> list = GetPersonList();
list.ForEach(new Action<Person>(delegate(Person p) { Console.Write(p.Name + "&&" + p.Age); }));
//简写方式
list.ForEach(delegate(Person p) { Console.WriteLine(p.Name + "&&" + p.Age); });
}
#endregion
#region 2、系统泛型委托-Predicate 返回bool值
/// <summary>
/// 系统泛型委托-Predicate 返回bool值
/// </summary>
static void TestPredicate()
{
List<Person> list = GetPersonList();
list= list.FindAll(new Predicate<Person>(delegate(Person p) { return p.Age > 1; }));
//简写 ,使用findAll方法可以帮我们根据条件筛选出一个新的集合
list = list.FindAll(delegate(Person p ) {
return p.Age > 1;
});
List<Person> listNew = list.MyFindAll<Person>(delegate(Person p) { return p.Age > 1; });
}
//自己写的FindAll方法
static List<T> MyFindAll<T>(this List<T> list, Predicate<T> predicate)
{
List<T> newlist = new List<T>();
foreach (T item in list)
{
if (predicate(item))
{
newlist.Add(item);
}
}
return newlist;
}
#endregion
#region 3、比较委托返回值int
/// <summary>
///系统委托 Comparison
/// </summary>
static void TestComparison()
{
List<Person> list = GetPersonList();
list.Sort(delegate(Person x, Person y)
{
return x.Age - y.Age;
});
list.ForEach(delegate(Person p)
{
Console.WriteLine(p.Name + "," + p.Age);
});
}
#endregion
/// <summary>
/// 带自定义返回值的委托
/// </summary>
static void TestFunc()
{
List<Person> list = GetPersonList();
list.Select(new Func<Person,SmallPerson>(delegate(Person p){
return new SmallPerson() {Name =p.Name };
})); //映射
//简写
IEnumerable<SmallPerson>enuNew=list.Select((delegate(Person p)
{
return new SmallPerson() { Name = p.Name };
}));
List<SmallPerson> listnew = list.MySelect<Person, SmallPerson>(delegate(Person p) {
return new SmallPerson() {Name =p.Name };
});
}
static List<TR> MySelect<T, TR>(this List<T> list, Func<T, TR> func)
{
List<TR> listNew = new List<TR>();
foreach (T item in list)
{
//调用func委托将老集合元素转成另一个元素返回
TR re = func(item);
//将转换后的新元素,存入新集合
listNew.Add(re);
}
return listNew;
}
}
class SmallPerson
{
public string Name { get; set; }
}
}
C#常用的内置委托的更多相关文章
- 委托+内置委托方法+多播委托+lambda表达式+事件
委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...
- .NET (三)委托第三讲:内置委托Action
.NET 为我们提供了无返回值的内置委托 Action,代码如下: // 摘要: // 封装一个方法,该方法只有一个参数并且不返回值. // // 参数: // obj: // 此委托封装的方法的参数 ...
- python常用数据类型内置方法介绍
熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...
- Python基础学习笔记(七)常用元组内置函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-tuples.html 3. http://www.liaoxue ...
- JS中一些常用的内置对象
在JS中,经常会遇到明明知道一个对象有某个属性或方法,可是又不知道怎么写的情况.下面,我就罗列了一些JS中常用的内置对象的属性和方法. Math对象: Math对象的作用是执行常见的算术任务. 首先M ...
- python常用的内置函数哈哈
python常用的内置函数集合做一个归类用的时候可以查找 abs 返回数字x的绝对值或者x的摸 all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为true,就 ...
- python常用的内置函数
python常用的内置函数集合做一个归类用的时候可以查找- abs 返回数字x的绝对值或者x的摸 - all (iterable)对于可迭代的对象iterable中所有元素x都有bool(x)为tru ...
- asp。net内置委托
Action与Func是APS.NET内置委托 //--------------无返回值的委托Action--------------------------- Action是无返回值的泛型委托 Ac ...
- day15生成器send方法,递归,匿名函数,max结合匿名工作原理,常用的内置函数
复习 ''' 1.带参装饰器 - 自定义 | wraps def wrap(info) def outer1(func): from functools import wraps @wraps(fun ...
随机推荐
- Web 前沿——HTML5 Form Data 对象的使用(转)
XMLHttpRequest Level 2 添加了一个新的接口——FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...
- 怎样给win7系统硬盘分区
怎样给win7系统硬盘分区 步骤 一.鼠标右击“计算机” 二.选择“管理”标签 三.打开“计算机管理”窗口 四.选择“磁盘“>>”存储管理“,打开”磁盘管理“页面 如图: 五.右键单击选择 ...
- Spring mvc中@RequestMapping 6个基本用法整理
继续整理,这个是前段时间用jsp开发的一个站点,说起来php程序员去做jsp程序确实有些小不适应,但是弄完后绝对对于这种强类型语言而比收获还是颇多的. 1,最基本的,方法级别上应用 @RequestM ...
- TCP/IP 3次握手
参看下面链接:http://blog.chinaunix.net/uid-20665047-id-3137792.html
- 利用glibc中锁结构的信息解决死锁问题
首先非常感谢老丁和老李同学的帮助,没有他们这个问题估计又得搞很久.遇见这个问题,真是头疼.不熟悉代码.不熟悉流程,但是领导还是把活给排下来了(实在不解),只能硬着头皮找了. 问题是这样的,cac ...
- php 技巧、高效率写法 推荐(转载+总结)
0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数" ...
- CSS浏览器兼容问题集-第一部分
CSS对浏览器的兼 容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于 web2.0的过度,请尽量用xhtm ...
- service2008 word 导入导出 配置问题
除了配置 com组件权限 64位系统还要加 下面的文件 C:\Windows\SysWOW64\config\systemprofile\Desktop C:\Windows\Temp 也要加权限
- mysqlbackup
mysqlbackup 使用学习 1.设置数据库用户的相关权限 '; grant reload,replication client,super,process on *.* to backupuse ...
- 大端模式&小端模式、主机序&网络序、入栈地址高低问题
一.大端模式&小端模式 所谓的“大端模式”,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处 ...