WinForm程序中使用控制台作为输出窗口

来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 08:51 点击:

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

如果不仔细思考一下,你的代码看上去就会像是来自.NET1.0的东西。在本文中,我将告诉告诉你为什么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)

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1