摘要: 前一段时间因为有需要,做了一个关于winfrom 程序换肤的程序,刚开始的时候想图个简单,就用个皮肤控件引用一个就完了,可是那个效果很不是让人满意,主要是没有达到要求的效果,操作不够灵活,所以只有放弃那种简单的方法了。我看到迅雷7的换肤做的很好,我是不是可以模仿这做这下呢,刚开始的时候没有多大的头绪,做起来比较吃力。 接着我们老大推荐我在网上看到一篇关于winfrom窗体换肤的文章,对我的启发很大,采用了窗体重绘的方式,全部重写了窗体的界面,这样也从根本上能控制窗体的皮肤,先做一个窗体的基类,绘制好基类窗体,等做好了之后,其它需要适用这个窗体风格的都继承它就可以了。这是那篇文章的地址htt.. 阅读全文
posted @ 2012-12-04 14:46 飞狼在天 阅读(5020) 评论(26) 推荐(9) 编辑

最近遇到一个关于Linq的问题,
.where(provider).FirstOrDefault();和.FirstOrDefault(provider);的性能比较

关于这个主要有以下三种说法,但这方面的资料比较少,我找到的就下面着几个地方。

第一种说法:.where(provider).FirstOrDefault()比较快,
支持这个观点的资料:http://stackoverflow.com/questions/8663897/why-is-linq-wherepredicate-first-faster-than-firstpredicate

第二种说法:.FirstOrDefault(provider)比较快
感觉FirstOrDefault更加直接有效。

第三种说法:差不多一样快,这种说法也比较多,因为从linq的lazy来说及两种方法核心都是用List.GetEnumerator的来说应该是一样的
支持这个观点的资料:http://prashantvc.wordpress.com/2013/03/07/where-firstordefault-vs-firstordefault/

别人说的做为参考,还是自己测试一下


但通过测试的结果貌似是验证第一种说法。

最后在msdn上找到了我认为的答案
http://msdn.microsoft.com/en-us/library/bb882641.aspx

结果是,这两种性能完全看data的provider
有的情况直接(Immediate)执行快,有的情况延时的(Deferred) 快
比如说data是连接数据库,或者『wellcoded』的远端数据源,Deferred  streaming肯定更快
但是如果是完全备置的数据而且索引良好访问顺畅,那直接(Immediate)执行会快点(主要是少了一层yeild)。

这个具体可以通过上面的msdn网站查找其类型。

ps:这个地方的应用不局限于这两种方法,Linq的其它方法也都有着区别,在应用的时候查看一下该方法的类型应该是有帮助的。

posted @ 2014-07-25 08:58 飞狼在天 阅读(2124) 评论(10) 推荐(2) 编辑
摘要: C#的预处理命令其实还是蛮有用的,但是真正使用过得人不多,这个介绍一下平时用的比较多的预处理命令中的几个:#define,#undef ,#if,#endif.除此之外还有一些预处理命令#warning,#error,#region#endregion,#line,#pragma等,在这里就不一一介绍,都比较简单。 使用预处理器指令可以禁止编译器编译代码的某一部分,如果计划发布两个版本的代码,即基本版本和拥有更多功能的企业版本,就可以使用这些预处理指令,在编译软件的基本版本时,使用预处理器可以禁止编译器编译与额外功能的相关代码。另外在编写提供调试信息的代码时,也可以使用预处理器指令。 下面给. 阅读全文
posted @ 2013-08-20 11:03 飞狼在天 阅读(793) 评论(0) 推荐(0) 编辑
摘要: 以前在写到读取文件的代码时,经常要用到文件的路径,而每次让我有点搞的糊涂的就是斜杠的用法,又是正斜杠又是反斜杠的,还有双斜杠的,经常要经过几次调试才能正确的把文件的路径弄对,究其原因,主要是每次都没有认真的去总结,总是只要弄出来了就算过了,这样导致每次都会在这个问题上纠结一会,今天终于查了会资料,再加上自己的一些理解,总结一下,以便是我印象更加深刻,也使有需要的同学看到可以根本的解决这个问题。 “\” 这个是反斜杠,也称左斜杠。 “/” 这个是正斜杠,也称右斜杠。 在windows中文件的文件的路径是用反斜杠(\)表示(当初是为了和Unix的文件路径使用”/“区分开来),例如C:\windo. 阅读全文
posted @ 2012-12-05 10:27 飞狼在天 阅读(2161) 评论(0) 推荐(2) 编辑
点击右上角即可分享
微信分享提示