.net 委托的简化语法

1. 不需要构造委托对象

  ThreadPool.QueueUserWorkItem:通过线程池

   public static void WorkItem()
        {
            ThreadPool.QueueUserWorkItem(SomeAsyncTask, 5);
        }

        public static void SomeAsyncTask(object o)
        {
            Console.WriteLine("SomeAsyncTask:{0}", 0);
        }

2. 不需要定义回调方法(lambda 表达式):

   public static void CallbackWithouNewingADelegateObject()
        {
            ThreadPool.QueueUserWorkItem(
                obj => Console.WriteLine("SomeAsyncTask:{0}", obj),
                5);
        }

3. 局部变量不需要手动包装到类中即可传给回调方法。

时间: 2024-10-14 10:42:44

.net 委托的简化语法的相关文章

使用闭包简化语法

//: Playground - noun: a place where people can play import UIKit // 初始化一个整数数组 var arr = [1, 3, 5, 7, 8, 10, 12, 2, 0, 11, 9] // 排序, 默认是从小到大排序 arr.sort() // 通过闭包, 自定义排序方法 arr.sort({(a: Int, b: Int) -> Bool in return a > b }) arr = [1, 3, 5, 7, 8, 10

《C#图解教程》读书笔记之五:委托和事件

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所"持有"的方法.如果从C++的角度来理解委托,可以将其理解为一个类型安全的.面向对象的函数指针. (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组合委托.为委托+=增加

.NET基础拾遗(4)委托和事件1

一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所“持有”的方法. (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组合委托.为委托+=增加方法以及为委托-=移除方法让我们看起来像是委托被修改了,其实它们并没有被修改.事实上,委托是恒定的. 在为委托增加和移除方法时实际发生的是创建了一个新的委托,其调用列表是增加和移

委托,不知道你是否有也这样理解(二)

目录 泛型委托 简化语法 委托与反射 相关文章链接: 事件,你是否也这样理解  http://www.cnblogs.com/sunchong/p/sunchong.html 委托,你是否也这样理解(一) http://www.cnblogs.com/sunchong/p/3480612.html 一.泛型委托 我们知道泛型能够提高效率,避免代码重复,灵活. C#提供了无返回值的泛型委托:Action public delegate void Action<in T>(T obj); 从上我们

读书笔记—CLR via C#委托和attribute

前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 委托 类型安全的回调函数,函数签名定义声明.指向静态或实例方法 派生自System.MulticastDelegate的类 将方法绑定到委托时,C#和CLR都允许引用类型的协变性和逆变性 协变性指方法能返回从委托的返回类型派生的类型 逆变性是指

C#之委托(二)

其实在上一篇委托(一)中,创建委托还是太繁琐了点.代码量过多,可能会妨碍我们对代码和逻辑的理解.有些时候可能处理逻辑的代码都笔声明委托的代码要少,这就不可避免的增加了重复代码的量.所以在c#2中极大的简化了这种方法,在C#3中也出现了Lambda表达式来解决这种问题.我们先看一下最开始的的委托. private void Form1_Load(object sender, EventArgs e) { button1.Click += new EventHandler(LogPlainEvent

【C# 语法糖】

一, 扩展方法 1. 对某个类功能上的扩展 2. 特点: 使用方便,可以在不修改原代码的基础上进行扩展. 参照 linq,linq 就是一系列的扩展方法 3. 语法: 非泛型静态类,静态方法, 第一个参数加 this,表示是对该类型的扩展 4. 代码 public static class Extension { private static int _defaultInt = 0; public static int ToInt(this string str) { if (int.TryPa

.NET委托

什么是委托? -> 初识委托 在很多应用程序中(C,C++),需要对象使用某种回调机制,能够与创建它 的实体进行通信,在.NET平台下,通过委托来提供了一种回调函数机制,在.NET平台下,委托确保回调函数是类型安全的(这也正是.NET FreamWork与非托管代码的区别).本质上来讲,委托是一个类型安全的对象,它指向程序中另一个以后会被调用的方法(或多个方法),就是将方法作为 参数来传递. C#中定义委托类型 在C#中创建一个委托类型时,需要使用关键字 delegate 关键字,类型名可以自定

C# 1的核心基础之一——委托

C# 1的核心基础之一--委托 C# 1的核心基础之一--委托简单委托的构成合并和删除委托事件的简单讨论委托总结 简单委托的构成 声明委托类型: delegate void StringProcessor(string input); 为委托实例的操作找到一个恰当的方法 void PrintString(string x)完全符合要求 void PrintInteger(int x)参数类型不兼容 void PrintTwoStrings(string x, string y)参数个数不匹配 i