.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的更多相关文章

  1. 委托+内置委托方法+多播委托+lambda表达式+事件

    委托概念:如果我们要把方法当做参数来传递的话,就要用到委托.简单来说委托是一个类型,这个类型可以赋值一个方法的引用. 声明委托: 在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字 ...

  2. C#内置委托类型Func和Action对比及用法

    C#的内置委托类型 Func Action 返回值 有(只有一个Tresult) 无 重载 17个(0参-16参) 17个(0参-16参) 泛型 支持 支持 系统内置 是 是 是否需要声明 否 否 c ...

  3. C#常用的内置委托

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  4. asp。net内置委托

    Action与Func是APS.NET内置委托 //--------------无返回值的委托Action--------------------------- Action是无返回值的泛型委托 Ac ...

  5. 一、JavaScript概述 二、JavaScript的语法 三、JavaScript的内置对象

    一.JavaScript的概述###<1>JavaScript的概念 又称ECMAScript,和java没有任何关系 嵌入在HTML元素中的 被浏览器解释运行的 一种脚本语言. ###& ...

  6. .NET (二)委托第二讲:内置委托Func

    在上一章节中,我们自己声明了一个委托: public delegate bool Cal(int num); 接受int参数,返回bool类型,目的是过滤集合中的 奇数 或者 偶数. .NET 为我们 ...

  7. .NET (五)委托第五讲:内置委托Predicate

    // 摘要: // 表示定义一组条件并确定指定对象是否符合这些条件的方法. // // 参数: // obj: // 要按照由此委托表示的方法中定义的条件进行比较的对象. // // 类型参数: // ...

  8. python成长之路第三篇(3)_内置函数及生成器迭代器

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.lambda表达式 2.map内置函数 3.filter内置函数 4.reduce内置函数 5.yield生成器 ...

  9. java注解学习(1)注解的作用和三个常用java内置注解

    今天,记录一下自己学习的关于注解方面的知识. Annotation是从JDK5.0开始引入的新技术 Annotation的作用: -不是程序本身,可以对程序做出解释(这一点和注释没什么区别) -可以被 ...

随机推荐

  1. mybatis 中sql语句传递多个参数

    Available parameters are [2, 1, 0, param1, param2, param3] <select id="loginByTeacher"  ...

  2. Delphi_OD_代码_调试_Delphi反调试技术(以OD为例附核心原代码) (转)

    1.程序窗口[chuang kou]句柄[ju bing]检测原理:用FindWindow函数[han shu]查找[cha zhao]具有相同窗口[chuang kou]类名和标题的窗口[chuan ...

  3. AFNetwork ATS 网络层改造

    最近一直做项目的ATS改造,期间遇到了种种问题,各种坑都记录下来, 比如iOS版本.afnetwork版本.证书(是否为自签证书).域名验证.TLS版本等等,我们项目更复杂,还使用了域名到IP映射的路 ...

  4. mac java 安装路径

    google了一下,发现了这篇文章Important Java Directories on Mac OS X,可以使用工具命令"/usr/libexec/java_home"来定 ...

  5. 很不错的在线Office控件:IWebOffice与SOAOffice

    http://blog.csdn.net/cjh200102/article/details/17220441 iWebOffice2003文档控件 iWebOffice2003网络文档中间件能够在I ...

  6. sqlserver无ldf日志文件附加的方法(数据库没有完全关闭,无法重新生成日志)

    数据库的ldf日志文件被删了,直接附加时报错:数据库没有完全关闭,无法重新生成日志 那怎么恢复数据呢?方法如下: 在数据库中新建一个同名的数据库(文件路径要与原来的相同,ldf的文件名也要相同),然后 ...

  7. java基础-servlet-2:生命周期

    1.加载(class load) 2.实例化 3.init() 4.doGet() 5.destroy 只有一个对象存在于服务端提供服务.再次访问,不会再起新对象.

  8. OAF_开发系列13_实现OAF通过Vector动态查询设置(案例)

    20150715 Created By BaoXinjian

  9. CentOS下Apache开启Gzip网页压缩功能

    1.进入/etc/httpd/conf下打开httpd.conf文件 开启Gzip压缩功能,即去掉LoadModule deflate_module modules/mod_deflate.so这行前 ...

  10. (转)Java:按值传递和按引用传递详细解说

    值传递和引用传递详解: 1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递.示例如下: public class TempTest { private void test1(int a ...