zoukankan      html  css  js  c++  java
  • delegate、Func、Action几个常用手法

    委托是我们C#开发当中使用频率非常的高一个手段,好处我就不列举了。

    委托早期版本中只有delegate,后期版本有了Func(有返回值)和Action(无返回值)两委托方法。

    我这里将列举它们三个常用的表现方式,还是老规矩上代码:

    class Program
        {
            private delegate int GetSum(List<Product> list); // First Definition Delegate
            static void Main(string[] args)
            {
                //C# delegate
    
                List<Product> list = new List<Product>()
                {
                        new Product{ProductName="Iphone4s", Price=3000},
                    new Product{ProductName="Iphone5",Price=4000},
                    new Product{ProductName="Ipad4",Price=3500}
                };
                GetSum s = GetTotal;
                Console.WriteLine(s(list));
    
                //C# Func
    
                //Method A
                Func<List<Product>, int> func = GetTotal;
                Console.WriteLine(func(list));
    
                //Method B
                Func<List<Product>, int> func1 = delegate(List<Product> listA)
                {
                    
                    return listA.Sum(p => p.Price);
                };
                Console.WriteLine(func1(list));
                
                //Method C
                Func<List<Product>,int> func2=listB=>{
    
                    return listB.Sum(p => p.Price);
                };
                Console.WriteLine(func2(list));
    
                //C# Action
    
    
                Action<List<Product>> action = listC =>
                {
                    listC.ForEach(p => Console.WriteLine(p.Price));
                };
    
                action(list);
                Console.Read();
            
            }
    
            public static  int GetTotal(List<Product> list)
            {
                return list.Select(p => p.Price).Sum();
            }
        }
    
        public class Product
        {
            public string ProductName{get;set;}
            public int Price{get;set;}
        }
  • 相关阅读:
    光照模型
    多线程编程(7)Semaphore信号量
    多线程编程(3)
    Oracle SQL*plus常用的命令和函数
    经典的开发工具
    Windows 7/Vista下通过组策略禁止USB接口
    浅谈.NET下的多线程
    SQLServer和Oracle常用函数对比
    注册表操作类
    利用using和try/finally语句来清理资源
  • 原文地址:https://www.cnblogs.com/flyfish2012/p/3234555.html
Copyright © 2011-2022 走看看