知识大全 浅谈如何使用Lambda表达式做抽象代表

Posted 表达式

篇首语:知识就是飞上天的羽翼。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈如何使用Lambda表达式做抽象代表相关的知识,希望对你有一定的参考价值。

浅谈如何使用Lambda表达式做抽象代表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Lambda表达比代表定义和带外方法定义的结合更清楚 且相关的额外工作只需要满足语言定义即可 不过 它也有一些不足之处 如果某个方法的参数包含System Delegate 这样的抽象类型 用lambda表达式介绍特殊的问题 C#编译器不能将lambda表达式转换成还未明确定义的衍生代表类型

  如果不仔细思考一下 你的代码看上去就会像是来自NET 的东西 在本文中 我将告诉告诉你为什么lambda表达式不足以被直接转换成抽象代表类型 并且教你怎样使得编译器转换你所定义的指定代表 解决方案依赖于Windows Presentation Foundation(WPF)和System Windows Threading Dispatcher组件 但是严格意义上说 该问题不是一个WPF问题 文中所描述的问题出现在若干 NET框架中 包括Windows Forms Office 应用程序接口和映射应用程序接口 你可以按照下列方法来处理同类问题

  无论我什么时候使用 NET框架中带有来自代表表格的参数的应用程序接口 我都会倾向于使用lambda表达式而不是更详细的表达式 例如 这行代码创建了一个System Windows Threading Timer 在计时器失效时 该代码调用了一个TickHandler方法

  

  tick = new System Threading Timer((unused) =>

  TickHandler());

  如果方法的内容足够少 我就会用方法的内容替代TickHandler()方法调用 该方法大多数情况下都有效 但是当应用程序接口将System Delegate作为参数时 这一技巧不管用 例如 我们将System Windows Controls Dispatcher Invoke()方法穿过WPF中的线程实施调用

  

  public object Invoke(

  delegate method

  params object[] args)

  现在考虑一下当我们尝试用lambda表达式来执行这样的调用时 将会发生什么

  

  MyTime Dispatcher Invoke(() => DoSomething());

  会出现隐秘错误

  

  error CS : Cannot convert lambda expression to

  type System Delegate because it is not a delegate type

  或许第一次看到这个错误的时候 你还不知道到底是怎么一回事 当然 这的确是一个代表类型 编译器不像人一样的灵活 System Delegate类型是一个抽象类型 且该类型的推理工具不能推断出自变量或某些用于未知代表类型的返回值的数量和种类 要解决这一问题 我们必须创建一个具体的代表类型并为该类型指定lambda表达式 记住 代表类型要求你将方法视为数据

  我创建了一个WPF计时器程序来展示其工作原理 其中阐述了C# 怎样简化与老式应用程序接口(下图)的运行

相关参考

知识大全 Lambda表达式的一般应用

.Net基础:Lambda表达式的一般应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Li

知识大全 Lambda表达式的一般应用

Lambda表达式的一般应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在List中实现Fi

知识大全 Linq入门演练:lambda表达式

Linq入门演练:lambda表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天大家一同

知识大全 .Net基础Lambda表达式的一般应用教程

.Net基础Lambda表达式的一般应用教程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在L

知识大全 探索Java语言与JVM中的Lambda表达式

探索Java语言与JVM中的Lambda表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  L

知识大全 Java8和Scala中的Lambda表达式

Java8和Scala中的Lambda表达式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 构建用于正则表达式的抽象Java API

构建用于正则表达式的抽象JavaAPI  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我的经验

行政行为依行为对象做标准可以分为具体行政行为和抽象行政行为

行政行为依行为对象做标准可以分为具体行政行为和抽象行政行为。_____答案:错误解析:依行为对象是否特定为标准,注意重心在是否特定上。

知识大全 Lambda

从根本上改变我们开发Java程序的方式:Lambda  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 从Lambda到Object

闭包工厂模式:从Lambda到Object  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面的