.NET (三)委托第三讲:内置委托Action
.NET 为我们提供了无返回值的内置委托 Action,代码如下:
// 摘要:
// 封装一个方法,该方法只有一个参数并且不返回值。
//
// 参数:
// obj:
// 此委托封装的方法的参数。
//
// 类型参数:
// T:
// 此委托封装的方法的参数类型。
public delegate void Action<in T>(T obj);
现在我们对集合中的元素自定义排序。
定义排序方法:
//排序
public static void MySort(List<int> list, Action<List<int>> act)
{
act(list);
}
方法接受一个Action的泛型委托,对list进行排序。
使用冒泡排序方式,对集合中的元素进行排序。
class Class3
{
static void Main(String[] args)
{
List<int> list = new List<int>();
list.Add();
list.Add();
list.Add();
list.Add();
list.Add();
list.Add();
list.Add(); //系统内置委托
Action<List<int>> act = new Action<List<int>>(SortFunc);
//无返回值 Action
MySort(list, SortFunc); foreach (int i in list)
{
Console.WriteLine(i);
} }
//排序方法
public static void SortFunc(List<int> array)
{
for (int i = ; i < array.Count - ; i++)
{
for (int j = ; j < i; j++)
{
if (array[i] > array[i + ])
{
var temp = array[i + ];
array[i + ] = array[i];
array[i] = temp;
}
} }
} //调用排序
public static void MySort(List<int> list, Action<List<int>> act)
{
act(list);
} }
同样可以省略委托名,如下:
MySort(list, delegate(List<int> array)
{
for (int i = ; i < array.Count - ; i++)
{
for (int j = ; j < i; j++)
{
if (array[i] > array[i + ])
{
var temp = array[i + ];
array[i + ] = array[i];
array[i] = temp;
}
} }
});
使用lamada语句:
MySort(list, (List<int> array)=>
{
for (int i = ; i < array.Count - ; i++)
{
for (int j = ; j < i; j++)
{
if (array[i] > array[i + ])
{
var temp = array[i + ];
array[i + ] = array[i];
array[i] = temp;
}
} }
});
.NET (三)委托第三讲:内置委托Action的更多相关文章
- 委托+内置委托方法+多播委托+lambda表达式+事件
委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...
- C#内置委托类型Func和Action对比及用法
C#的内置委托类型 Func Action 返回值 有(只有一个Tresult) 无 重载 17个(0参-16参) 17个(0参-16参) 泛型 支持 支持 系统内置 是 是 是否需要声明 否 否 c ...
- C#常用的内置委托
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- asp。net内置委托
Action与Func是APS.NET内置委托 //--------------无返回值的委托Action--------------------------- Action是无返回值的泛型委托 Ac ...
- 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象
一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...
- .NET (二)委托第二讲:内置委托Func
在上一章节中,我们自己声明了一个委托: public delegate bool Cal(int num); 接受int参数,返回bool类型,目的是过滤集合中的 奇数 或者 偶数. .NET 为我们 ...
- .NET (五)委托第五讲:内置委托Predicate
// 摘要: // 表示定义一组条件并确定指定对象是否符合这些条件的方法. // // 参数: // obj: // 要按照由此委托表示的方法中定义的条件进行比较的对象. // // 类型参数: // ...
- python成长之路第三篇(3)_内置函数及生成器迭代器
打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ...
- java注解学习(1)注解的作用和三个常用java内置注解
今天,记录一下自己学习的关于注解方面的知识. Annotation是从JDK5.0开始引入的新技术 Annotation的作用: -不是程序本身,可以对程序做出解释(这一点和注释没什么区别) -可以被 ...
随机推荐
- liunx之:ln命令
linux 一个很重要的命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,具体用法是: ln -s 源文件 目标文件 -s 是 symbolic的意思 ...
- 另类vs2015+xamarin 的android界面乱码 解决
text.Text += "验证key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置"; 代码就上面一行,单步走之前text.Text里面是汉 ...
- TCP打洞和UDP打洞的区别 (转)
为什么网上讲到的P2P打洞基本上都是基于UDP协议的打洞?难道TCP不可能打洞?还是TCP打洞难于实现? 假设现在有内网客户端A和内网客户端B,有公网服务端S. 如果A和B想要进行UD ...
- ecmobile中IOS版本中界面文字不显示的解决
查找以下方法. - (BOOL)setCurrentLanguageName:(NSString *)name{ BeeLanguage * lang = [self findLangu ...
- ListView 重设Adapter后的动作,remove/add ListView 的动作
Adapter adapter1 //设置adapter1,会创建屏幕可见多个的ItemView ListView.setAdapter(adapter1); //设置adapter为null,则上面 ...
- MSSQL 批量Update
UPDATE dbo.WX_TWODIMENCODE_INFO SET wti_scan_views=t.count FROM ( SELECT COUNT(*) AS 'count',lci_ere ...
- makefile函数
http://www.cnblogs.com/tianyajuanke/archive/2013/02/16/2610276.html 通用步骤: 编译时,可以不知钉头文件,如果指定头文件,其作用是当 ...
- Hadoop总结篇之一------开篇
从今天开始新的系列:Hadoop总结篇 之前的hadoop学习篇由于是学习过程中随手记下来的一些内容,不具有系统性.所以在这个系列中,将凭着这段时间的研究心得,来记录一些自认为比较重要的东西. 本系列 ...
- java解析命令行参数(common-cli)练习
package foo; import org.apache.commons.cli.BasicParser; import org.apache.commons.cli.CommandLine; i ...
- 解决Dropbox无法连接的问题
同步共享服务Dropbox从6月18日开始再次遭到封锁,原因是DNS污染.Dropbox上次在2010年5月曾遭到IP封锁和网址关键字过 滤,2012年5月除文件外链功能外其它功能可正常访问:2014 ...