zoukankan      html  css  js  c++  java
  • Action委托

    1. 无参无返回值

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1. 使用new关键字和调用Invoke方法
                Action action1 = new Action(ActionWithNoParaNoReturn);
                action1.Invoke();
    
                //2. 直接将方法名复制给Action委托,直接调用(推荐)
                Action action2 = ActionWithNoParaNoReturn;
                action2();
    
                //3. 匿名委托
                Action action3 = delegate() { Console.WriteLine("无参无返回值"); };
                action3();
    
                //4. Lambda委托(推荐)
                Action action4 = () => { Console.WriteLine("无参无返回值"); };
                action4();
    
                Console.ReadLine();
            }
            public static void ActionWithNoParaNoReturn()
            {
                Console.WriteLine("无参无返回值");
            }
        }
    }
    View Code

    2. 单一参数无返回值

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1. 使用new关键字和调用Invoke方法
                Action<String> action1 = new Action<String>(ActionWithPara);
                action1.Invoke("test");
    
                //2. 直接将方法名复制给Action委托,直接调用(推荐)
                Action<String> action2 = ActionWithPara;
                action2("test");
    
                //3. 匿名委托
                Action<String> action3 = delegate(String value) { Console.WriteLine("这里是有参无返回值,参数值是:{0}", value); };
                action3("test");
    
                //4. Lambda委托(推荐)
                Action<String> action4 = (value) => { Console.WriteLine("这里是有参无返回值,参数值是:{0}", value); };
                action4("test");
    
                Console.ReadLine();
            }
            public static void ActionWithPara(String value)
            {
                Console.WriteLine("这里是有参无返回值,参数值是:{0}", value);
            }
        }
    }
    View Code

    3. 多参数无返回值

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1. 使用new关键字和调用Invoke方法
                Action<String, int> action1 = new Action<String, int>(ActionWithMulitPara);
                action1.Invoke("test", 1);
    
                //2. 直接将方法名复制给Action委托,直接调用(推荐)
                Action<String, int> action2 = ActionWithMulitPara;
                action2("test", 1);
    
                //3. 匿名委托
                Action<String, int> action3 = delegate(String value1, int value2) { Console.WriteLine("这里有两个参数无返回值,参数值1是:{0},参数值2是:{1}", value1, value2); };
                action3("test", 1);
    
                //4. Lambda委托(推荐)
                Action<String, int> action4 = (value1, value2) => { Console.WriteLine("这里有两个参数无返回值,参数值1是:{0},参数值2是:{1}", value1, value2); };
                action4("test", 2);
    
                Console.ReadLine();
            }
            public static void ActionWithMulitPara(String value1, int value2)
            {
                Console.WriteLine("这里有两个参数无返回值,参数值1是:{0},参数值2是:{1}", value1, value2);
            }
        }
    }
    View Code

    4. 将委托当做参数值传递

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Test<string, int>(Action, "Hello World!", 2);
                Test<string, int>((p, q) => { Console.WriteLine("值1:{0}, 值2:{1}", p, q); }, "Hello World", 2);//使用Lambda表达式定义委托
                Console.ReadKey();
            }
    
            public static void Test<T1, T2>(Action<T1, T2> action, T1 t1, T2 t2)
            {
                action(t1, t2);
            }
    
            private static void Action(string s, int i)
            {
                Console.WriteLine("值1:{0}, 值2:{1}", s, i);
            }
        }
    }
    View Code

    5. 案例应用

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication2
    {
        public class Student
        {
            public String Name { get; set; }
            public int Id { get; set; }
            public int Age { get; set; }
            public int Sex { get; set; }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                List<Student> list = new List<Student>()
                {
                  new Student(){Id=1,Name="张三",Age=19,Sex=1},
                  new Student(){Id=2,Name="李四",Age=20,Sex=2},
                  new Student(){Id=3,Name="王五",Age=23,Sex=1},
                  new Student(){Id=4,Name="赵六",Age=18,Sex=1}
                };
    
                //1. ForEach方法遍历
                Console.WriteLine("----ForEach方法遍历----");
                list.ForEach(p =>
                {
                    Console.WriteLine("姓名:{0}, 年龄:{1}", p.Name, p.Age);
                });
    
                //2. foreach循环遍历
                Console.WriteLine("----foreach循环遍历----");
                foreach (var item in list)
                {
                    Console.WriteLine("姓名:{0}, 年龄:{1}", item.Name, item.Age);
                }
    
                Console.ReadLine();
            }
    
        }
    }
    View Code

  • 相关阅读:
    [导入]遍历表单的代码,包括遍历所有,以及遍历特定tag,如input,select lcs
    [导入]JS更改onclick事件 lcs
    [导入]SQLite 字符串长度 函数 lcs
    [导入]休眠 睡眠 区别 lcs
    【转】OpenGL鼠标点击事件
    【转】键盘按键和键盘对应代码表
    【转】vs2010快捷键;sql server 2008快捷;IE9快捷键
    【转】vc6.0移植到VS2010遇到的问题,散分给大家,虽然分不多,各位帮忙
    【转】单缓冲与双缓冲的区别
    【转】光照、材质、纹理的关系
  • 原文地址:https://www.cnblogs.com/LuckyZLi/p/12888104.html
Copyright © 2011-2022 走看看