知识大全 浅谈如何使用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# 怎样简化与老式应用程序接口(下图)的运行
相关参考
.Net基础:Lambda表达式的一般应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Li
Lambda表达式的一般应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在List中实现Fi
Linq入门演练:lambda表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天大家一同
.Net基础Lambda表达式的一般应用教程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在L
探索Java语言与JVM中的Lambda表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! L
Java8和Scala中的Lambda表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs
构建用于正则表达式的抽象JavaAPI 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在我的经验
行政行为依行为对象做标准可以分为具体行政行为和抽象行政行为。_____答案:错误解析:依行为对象是否特定为标准,注意重心在是否特定上。
从根本上改变我们开发Java程序的方式:Lambda 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
闭包工厂模式:从Lambda到Object 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 下面的