zoukankan      html  css  js  c++  java
  • Lambda

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace LinqDemo

    {

       public  class ProcessData

        {

           public int id { get; set; }  

         

           public string Name { get; set; }

           public Int64 Memory { get; set; }

        }  

    }

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Xml.Linq;

    using System.Xml;

    using System.Diagnostics;

    namespace LinqDemo

    {

        class Program

        {

            static void Main(string[] args)

            {

                       

            }

         

           public static void LambdaDemoGeneral()

            {

                var process = new List<ProcessData>();

                foreach(var pro in Process.GetProcesses())

                {

                    if(pro.WorkingSet64>=20*1000*1000)

                    {

                        process.Add(new ProcessData {id=pro.Id,Name=pro.ProcessName,Memory=pro.WorkingSet64});

                    }

                }

                Array.ForEach(process.ToArray(), c => Console.Write("id为:" + c.id + "进程名为:" + c.Name + "进程大小为:" + c.Memory + " "));

            }

            public static bool Filter(Process process)

            {

                return process.WorkingSet64 >= 20 * 1000 * 1000;

            }

            public static void LambdaDemoDelegate(Predicate<Process> match)

            {

                var process = new List<ProcessData>();

                foreach (var pro in Process.GetProcesses())

                {

                    if (match(pro))

                    {

                        process.Add(new ProcessData { id = pro.Id, Name = pro.ProcessName, Memory = pro.WorkingSet64 });

                    }

                }

                Array.ForEach(process.ToArray(),c=>Console.Write("id为:"+c.id+"进程名为:"+c.Name+"进程大小为:"+c.Memory+" "));

              

           

            }

           //委托的使用

            public static void DelegateDemo()

            {

                LambdaDemoDelegate(Filter);

            }

           //匿名委托的使用

            public static void  NoNameDelegateDemo()

           {

              LambdaDemoDelegate(delegate(Process process){return process.WorkingSet64>=20*1000*1000});

           }

            //lambda表达式的使用

            public static void LambdaDemo()

            {

                LambdaDemoDelegate(process=>process.WorkingSet64>=20*1000*1000);

            }

        }

    }

    测试结果: 

    ------ Test started: Assembly: LinqDemo.exe ------

    id为:1804进程名为:explorer进程大小为:22355968
    id为:3096进程名为:SoftMgrLite进程大小为:30908416
    id为:432进程名为:sqlservr进程大小为:20783104
    id为:1944进程名为:sqlservr进程大小为:50274304
    id为:2228进程名为:TheWorld进程大小为:63655936
    id为:2572进程名为:AcroRd32进程大小为:40710144
    id为:500进程名为:wandoujia_helper进程大小为:57176064
    id为:308进程名为:AcroRd32进程大小为:20774912
    id为:2080进程名为:searchindexer进程大小为:20176896
    id为:1100进程名为:svchost进程大小为:27500544
    id为:5464进程名为:ProcessInvocation86进程大小为:28516352
    id为:648进程名为:OrayRemoteService进程大小为:34111488
    id为:3988进程名为:devenv进程大小为:124190720
    id为:3868进程名为:TheWorld进程大小为:91607040
    id为:5180进程名为:WebDev.WebServer进程大小为:62074880
    id为:2772进程名为:QQ进程大小为:30638080
    id为:5524进程名为:TheWorld进程大小为:43868160

    1 passed, 0 failed, 0 skipped, took 0.75 seconds (Ad hoc).

    以上几个实例,从当前进程中筛选出运行内存大于等于20MB的进程,使用了几种方法,一般方法,委托,匿名委托,lambda表达式。

  • 相关阅读:
    160809322-王翔君第十一次c语言作业
    c语言第九次作业
    王翔君第9次c语言作业
    王翔君160809322第六次作业
    160809322-王翔君第四次作业
    第三次作业160809322
    160809322-王翔君
    160809322-王翔君
    输出不可重复的质因数
    求最大数与最小数乘积
  • 原文地址:https://www.cnblogs.com/flyaway100/p/3463022.html
Copyright © 2011-2022 走看看