前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为LINQ服务的C#新特性总结篇---扩展方法,匿名委托,lambda表达式,Action委托,Func委托,Linq中的order by,top和sum函数

为LINQ服务的C#新特性总结篇---扩展方法,匿名委托,lambda表达式,Action委托,Func委托,Linq中的order by,top和sum函数

作者头像
liulun
发布2022-05-09 11:14:20
6210
发布2022-05-09 11:14:20
举报
文章被收录于专栏:liulun
代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace ConsoleApplication1
{
    static class Program
    {
        static void Main(string[] args)
        {
            //Predicate
            //把方法当作参数传递
            DisplayProcess(Filter);
            //匿名委托
            DisplayProcess(delegate(Process process) { return process.WorkingSet64 >= 20 * 1024 * 1024; });
            //lambda表达式
            DisplayProcess(process =>  process.WorkingSet64 >= 20 * 1024 * 1024);

            //action
            Action<string> print_string = (s) =>  Console.WriteLine(s);
            print_string.Invoke("就这么简单!");
            //Func
            Func<DateTime> get_time = () => DateTime.Now;
            DateTime now = get_time.Invoke();
            print_string.Invoke(now.ToString());
            //扩展方法
            List<int> int_list = new List<int> { 1, 2, 3, 4, 5, 6, 7 };
            int b= int_list.list_sum();
            print_string.Invoke(b.ToString());
            //sql中的top和order by
            var c = int_list.OrderByDescending(i => i).Take(3);
            foreach (int k in c)
            {
                print_string.Invoke(k.ToString());
            }
            var d = int_list.OrderByDescending(i => i).Take(3).Sum();
            print_string.Invoke(d.ToString());
            Console.ReadKey();
        }
        /// <summary>
        /// 扩展方法必须在非泛型静态类中定义
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        static int list_sum(this IEnumerable<int> list)
        {
            int a = 0;
            foreach (var i in list)
            {
                a += i;
            }
            return a;
        }
        /// <summary>
        /// Predicate<Process>是泛型委托
        /// 定义如下public delegate bool Predicate<T>(T obj);
        /// </summary>
        /// <param name="match"></param>
        private static void DisplayProcess(Predicate<Process> match)
        {
            foreach(var process in Process.GetProcesses())
            {
                if (match(process))
                {
                    Console.WriteLine("{0}            {1}", process.ProcessName, process.WorkingSet64);
                }
            }
            
        }
        private static bool Filter(Process process)
        {
            return process.WorkingSet64 >= 20 * 1024 * 1024;
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档