RSS 2.0 Feed
2004-04 Entries
摘要:昨天下午等朋友的时候,在报摊买了一本《MSDN开发精选》。这本杂志是CSDN和微软中国联合出的,双月刊+1CD,内容主要是一些MSDN上精彩文章的翻译,译得还不错,有些就是直接来自MSDN中文网站。内容虽然还过得去,但是相对于¥18的价格来还是贵了一些,尤其是那个CD,完全没有必要,VB.NET Resource Kit,Sample代码等等,这些完全可以从MSDN直接下载。窃以为,去掉这个CD,定价在¥10左右更合理一些。...[阅读全文]

posted @ | Feedback (16) | Filed Under [ 读书 ]

摘要:在C# FAQ中看到一篇讨论types polymorphic的随笔。 这个问题还真是有一点迷惑性。我的第一感觉是,用类似public static void Swap(object a, object b);这样的代码就能实现两个object的交换了,因为object是reference type。可是动手试过和看过讨论之后才知道这样是不行的。 实际上,public static void Swap(ref object a, ref object b);的IL是: .method public hidebysig static void  Swap(object& a, object& b) cil managed 而public static void Swap(object a, object b);的IL是: .method public hidebysig static void  Swap(object a, object b) cil managed真正的type polymorphic的解法,自然是Generics了。...[阅读全文]

posted @ | Feedback (5) | Filed Under [ 学习 ]

摘要:最近由于项目的原因,需要在Win9x平台上做一些底层的工作。Win95/Win98虽然是32位的操作系统,但是为了兼容16位应用程序,其中仍然保留着相当数量的16位程序,一些系统调用,最终还是通过16位程序完成的。这样,在Win9x平台上,一些底层的应用就会涉及32位代码和16位代码之间的互相调用。 微软为16位与32位代码间的互操作提供了一个标准的解决方案,称作Flat Thunk(在微软的技术中,有很多地方都用到了thunk这个词,比如在ATL中也有一个thunk,用来实现窗口句柄和窗口类之间的映射。Thunk在金山词霸中的解释是“形(式)实(在)转换程序”,侯捷在某处将它译为“一小段程序”)。简单说来,Flat Thunk由一个thunk脚本、一个32位dll和一个16位dll组成,这两个dll中含有thunk compiler生成的32位和16位连接代码,避免了由程序员自己来处理32位和16位代码转换时复杂的堆栈管理、内存对齐等工作。KB中有两篇文章解说的很详细:   HOWTO: Call 16-bit Code from 32-bit Code Under Windows 95, Windows 98, and Windows Me HOWTO: Call 32-bit Code from 16-bit Code Under Windows 95, Windows 98, or Windows Millennium Edition   其中要用到一些比较古老的工具,现在的Platform SDK中已经没有了,比如VC1.52、Thunk Compiler等。如果一直有订阅MSDN,到以前的MSDN中找找,可能能够找到。...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 工作 ]

摘要:就像VS.NET从beta1到beta2有非常多的变化一样,Whidbey的PDC Preview版本与VS2005 Community Preview之间也存在着非常多的变化。比如上次刚刚说到的Whidbey中Provider的实现,在PDC Preview中是通过IProvider接口,以及由它派生的接口,比如IMembershipProvider实现的;而在VS2005中IProvider系列接口已经消失了,取而代之的是ProviderBase以及由它派生而来的一系列虚基类,这些虚基类提供的方法接口与IProvider系列接口提供的相似。按照一般的理解,虚基类和接口的功能是类似的,因此没看出这个变化在设计上有什么好处,可能只是为了Provider能够跨越AppDomain吧,因为ProviderBase派生自MarshalByRefObject。 VS2005在界面和易用性方面的改进也很显著,.NET Tools评测网有许多这方面的贴图和介绍,大家可以看看。另外,VS2005C带了一个简单的文档,可是里面有些东西与实际不符,比如MembershipProvider中的抽象方法在文档中的标示是static,搞得我还以为C#有加了新特性,连static方法也可以是虚的了呢...[阅读全文]

posted @ | Feedback (1) | Filed Under [ 学习 ]