• 每天学习一点.net(5) 利用匿名方法Lambda表达式(=>)实现委托


    Lambda表达式的语法格式为: 参数列 => 语句或语句块

    它是一个匿名函数。它包含表达式和语句,常用于创建委托或表达式目录树类型

    通常Lambda表达式的参数都是可变类型的,由编译器自动确定它的具体类型。但有时编译器难于或无法推断输入类型,就需要为参数显示指定类型,既在参数之前添加参数类型。如下所示的Lambda表达式包括连个参数x和s。其中x是int类型,而s则是string类型。

    (int x, string s) =>s.Length > x

    当Lanbda表达式没有参数时,需要使用空的括号表示,如下所示。其中,“()”表示没有参数,而Amethod()是一个具体的方法,该方法的返回值就是Lambda表达式的结果。

    () => AMethod()

     示例:

    using System;
    using System.Threading;
    public static class CancellationDemo
    {
        public static void Main()
        {
            CancellationTokenSource cs = new CancellationTokenSource();
            ThreadPool.QueueUserWorkItem(o => Count(cs.Token, 1000));
         
            Console.WriteLine("press <Enter> key to stop he child thread");
            Console.ReadLine();
            cs.Cancel();
            Console.ReadLine();
         
    
        }
        private static void Count(CancellationToken token, int countTo)
        {
            for (int count = 0; count <= countTo; count++)
            {
                if (token.IsCancellationRequested)
                {
                    Console.WriteLine("it is done by the main thread");
                    break;
                }
                Console.WriteLine(count);
                Thread.Sleep(200);
            }
            Console.WriteLine("it is done");
    
        }
    }
    

     ThreadPool.QueueUserWorkItem 是实现将一个异步的、计算限制的操作放到线程池的队列中。

    ThreadPool.QueueUserWorkItem(Waitcallback Callback,Object state)
    在ThreadPool.QueueUserWorkItem(o => Count(cs.Token, 1000)) 中,=>作为了一个匿名方法传递给QueueUserWorkItem
    o为Object o,表示传入参数。
  • 相关阅读:
    Java开发中的一些小技巧
    Java后端WebSocket的Tomcat实现
    Spring事务配置的五种方式 -- 越往后需要Spring版本越高
    Spring事务管理 -- 挺好
    java List 排序 Collections.sort() 对 List 排序
    java List 排序 Collections.sort()
    Java获得文件的创建时间(精确到秒)
    [JSP] c:forEach 输出序号 每行自动生成序号
    Unity3D研究院之在开始学习拓展编辑器
    同样的代码在java和c++中结果不同
  • 原文地址:https://www.cnblogs.com/marsblog/p/3137368.html
Copyright © 2020-2023  润新知