zoukankan      html  css  js  c++  java
  • .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(1);
                list.Add(2);
                list.Add(3);
                list.Add(4);
                list.Add(5);
                list.Add(7);
                list.Add(6);
    
    
                //系统内置委托
                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 = 0; i < array.Count - 1; i++)
                {
                    for (int j = 0; j < i; j++)
                    {
                        if (array[i] > array[i + 1])
                        {
                            var temp = array[i + 1];
                            array[i + 1] = 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 = 0; i < array.Count - 1; i++)
                    {
                        for (int j = 0; j < i; j++)
                        {
                            if (array[i] > array[i + 1])
                            {
                                var temp = array[i + 1];
                                array[i + 1] = array[i];
                                array[i] = temp;
                            }
                        }
    
                    }
                });

    使用lamada语句:

    MySort(list, (List<int> array)=>
                {
                    for (int i = 0; i < array.Count - 1; i++)
                    {
                        for (int j = 0; j < i; j++)
                        {
                            if (array[i] > array[i + 1])
                            {
                                var temp = array[i + 1];
                                array[i + 1] = array[i];
                                array[i] = temp;
                            }
                        }
    
                    }
                });
  • 相关阅读:
    关于Java的代理模式
    关于Java串行、并行执行——使用Callable多线程
    关于区域表system_district:省市县街道四级地址表
    关于MongoDB在windows下安装
    关于Eureka 服务注册列表显示IP问题研究
    关于开发APP接口版本不兼容的问题
    关于MySQL创建数据库字符集和数据库排序规则的对比选择
    关于MySQL的行转列
    关于MySQL统计一列中不同值的数量方法
    关于Java 8 forEach
  • 原文地址:https://www.cnblogs.com/gosky/p/6038717.html
Copyright © 2011-2022 走看看