Leo Zhang

A simple man with my own ideal

2009年9月17日 #

理解.Net中带out、ref的方法签名和普通方法签名的区别

摘要:今天有位新同事问我.Net中带out、ref的方法签名和普通方法签名的有什么区别?我觉得可以从下面的例子说明一些关键的地方。 一、ref/out修饰符说明 对于用ref/out修饰符的说明在MSDN上有详细的说明,地址如下: http://msdn.microsoft.com/en-us/library/t3c3bfhx(VS.80).aspx。 二、透过IL代码观察ref/out修饰的方法签名(以值类型为例) 1、示例代码: 阅读全文

posted @ 2009-09-17 10:15 Leo Zhang 阅读(2917) 评论(22) 推荐(1) 编辑

2009年9月3日 #

深入了解Jit编译发生的过程

摘要:CLR是如何找到托管代码的入口方法并对其Jit的呢?Jit的发生过程是怎么样的呢?Jit编译器和Metadata表又有什么关系呢?本文试图寻找出答案,在此之前,不妨先了解一下CLR Header的大致结构。 以如下代码为例: 阅读全文

posted @ 2009-09-03 13:46 Leo Zhang 阅读(2385) 评论(7) 推荐(3) 编辑

2009年8月23日 #

深入了解CLR的加载过程

摘要:我们知道,.net编译器在生成托管代码时会将一些重要信息写入PE文件的header和.text section(后边我会介绍这些写入程序集的重要信息是什么),本文介绍当我们双击一个托管代码写的exe程序时发生的事情。 阅读全文

posted @ 2009-08-23 20:47 Leo Zhang 阅读(7328) 评论(32) 推荐(18) 编辑

2009年8月17日 #

MSIL 心得

摘要:Microsoft intermediate language (MSIL)是一种编程语言,可以把它看成是组成.NET Framework的一部分,不论从内容还是形式上它都像是一种汇编语言,但是与传统的汇编语言又不太一样,初学MSIL的时候觉得它很亲切,我可以用使用高级语言编程的习惯来使用MSIL编程,例如它是面向对象的,可以用newobj指令生成一个类型实例,所以我在代码中可以这样来新建一个类型的对象: newobj instance void AOP_Programing.UsingAOP::.ctor() 可以用callvirt指令来调用其虚方法: callvirt instance void AOP_Programing.UsingAOP::Display() 阅读全文

posted @ 2009-08-17 17:28 Leo Zhang 阅读(2336) 评论(6) 推荐(4) 编辑

2009年7月15日 #

Interface到底继承于Object吗?之我见

摘要:今天和同事讨论了一个问题:Interface到底继承于Object吗? 我看过的所有关于.Net的书都告诉我“所有的类型都是继承于System.Object的”,那么理所当然 Interface也是继承于System.Object的,以下面代码为例: 阅读全文

posted @ 2009-07-15 13:36 Leo Zhang 阅读(3646) 评论(63) 推荐(10) 编辑

2009年7月2日 #

使用.NET Remoting 技术并采用服务端SingleCall激活方式下如何实现客户端向服务端传递参数

摘要:.NET Remoting技术是构建企业级分布式应用的很好选择,(个人感觉随.Net Framework 3.0推出的WCF更加强大和易用),我们的项目采用服务端SingleCall方式来激活远程对象,在这种方式下最大的特点是当你new一个对象出来的时候并不会调用相应类型的构造函数,只有当你使用该类型的方法时才会调用构造函数,为换句话说就是SingleCall方式下不保存对象状态,这样做的好处是客户端不会长时间占用服务器资源,但是也就造成不能共享状态。 最近让我苦恼的一件事是:我想在客户端生成远程对象的时候传一个参数进去,但是服务端激活方式Singleton和SingleCall在生成远程对象时只支持调用无参的默认构造函数,所以在调用带参数的构造函数上我就死了心(不知道各位高手能不能搞定),下面我还原一下我的场景: 阅读全文

posted @ 2009-07-02 15:21 Leo Zhang 阅读(3135) 评论(11) 推荐(0) 编辑

2009年6月24日 #

如何从一个event事件的委托列表上移除事件

摘要:前些天有同事问我怎么从一个Button的Click事件中移除所有委托,我想了一下可以这样来做: 阅读全文

posted @ 2009-06-24 16:19 Leo Zhang 阅读(800) 评论(0) 推荐(0) 编辑

关于C#中动态加载AppDomain的问题

摘要:在操作系统中,利用进程可以对正在运行的应用程序进行隔离,每个应用程序被加载到单独的进程中,并为其分配虚拟内存,进程无法直接访问物理内存,只能通过操作系统将虚拟内存映射到物理内存中,并保证进程之间的物理内存不会重叠,但是进程最大的缺点就是效率问题,尤其是进程的切换开销很大,而进程间不能共享内存,所以不可能从一个进程通过传递指针给另一个进程。 在.NET中出现了一个新的概念:AppDomain——应用程序域,所有.NET应用程序都需要运行在托管环境中,操作系统能提供的只有进程,因此.NET程序需要通过AppDomain这个媒介来运行在进程中,同时使用该incheng提供的内存空间,只要是.NET. 阅读全文

posted @ 2009-06-24 15:50 Leo Zhang 阅读(3951) 评论(12) 推荐(0) 编辑

2009年5月8日 #

File Name Sorting With Natural Sort Order

摘要:     前些日子看了Jeff Atwood的一片文章:《Sorting for Humans: Natural Sort Order》,地址如     下:http://www.codinghorror.com/blog/archives/001018.html      这篇文章主要讲了他关于以... 阅读全文

posted @ 2009-05-08 16:08 Leo Zhang 阅读(441) 评论(0) 推荐(0) 编辑

关于C#中Anonymous Method---匿名方法的基础知识

摘要:Anonymous Method--匿名方法说的是不对方法进行显式定义而将方法的执行代码直接封装到Delegate对象中,这样做的好处不仅仅是简化代码这么简单,它还可以帮助你进行多个方法间的状态共享和将代码段作为参数进行传递。一、Anonymous Method初探 下面看一个不使用Anonymous Method的例子: usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;namespaceAnonymous_Method{staticclassProgram{///<summary>///应 阅读全文

posted @ 2009-05-08 15:16 Leo Zhang 阅读(950) 评论(1) 推荐(0) 编辑

导航