随笔分类 -  .Net Framework

CLR系列:浅析委托
摘要:前几天写了一篇文章:CLR系列:浅析泛型的本质,感谢大家的支持,看到一位读者说,泛型已经是2.0的技术,现在都是3.5了,研究他已经没必要,落后了。在这里,我想对大家说,无论是泛型,还是反射,还有今天我要讲的委托都是组成.NET开发的重要技术,什么时候研究都不算晚,都是有必要的。无论什么新的技术都是建立在老技术上面的。只要老的技术了解了,对与新技术也就不算很难了,再说不管过去的2.0,还是现在的3... 阅读全文

posted @ 2008-12-09 11:30 gjcn 阅读(2632) 评论(8) 推荐(0) 编辑

CLR系列:浅析.NET的JIT编译
摘要:JIT(Just In Time),这是我们通过.net编译器生成的应用程序最终面向机器的编译器,因此大家对JIT了解一下其工作原理还是很有必要的。最近研究了一下,参考了很多文章,也在msdn上查了些资料,以下是最近我对JIT的理解和总结。大家都知道CLR只执行本机的机器代码。目前有两种方式产生本机的机器代码:实时编译(JIT)和预编译方式(产生native image)。下面,我想分析... 阅读全文

posted @ 2008-12-01 16:37 gjcn 阅读(6604) 评论(18) 推荐(3) 编辑

CLR系列:浅析泛型的本质
摘要:泛型早在.net2.0就出来了,大家已经对它的使用很熟悉了,在工作中也大量的使用过它,但是大家对其工作原理,以及MS针对泛型对CLR做了那些工作是否了解呢。本文就是对泛型的本质进行讲解,希望能对大家有所帮助。1 引入泛型.Net2.0出来的时候,大家很轰动,其中.NET2.0做的一个很大的改变就是增加了泛型。在1.1的版本,大家还在使用一些如:ArrayList等集合。就算现在是.net3.5的时... 阅读全文

posted @ 2008-11-25 15:48 gjcn 阅读(5166) 评论(34) 推荐(7) 编辑

CLR系列:由一段代码所想到的
摘要:CLR系列有些时间没更新了,主要时由于最近一个项目太忙。所以没能更新。以后会继续。其他话就不说了,我们来看看一段代码:[代码]这段代码很简单,大家看看这段代码有什么问题呢? 开始这么一看似乎没什么大的问题。可是仔细分析一下代码你就可以知道其中还是有一些很严重的问题的。假如你对Lock机制有所了解并且对string类型有过研究的话你就会发现出问题:lock 关键字的参数必须为基于引用类型的对象,该对... 阅读全文

posted @ 2008-10-10 14:18 gjcn 阅读(3761) 评论(26) 推荐(0) 编辑

CLR系列:大型对象堆
摘要:园子里有很多人已经对CLR的GC Heap有过激烈的讨论,里面有不少精华文章。但是既然是CLR系列,那么就不得不对GC Heap进行讲解。本文主要是对LOH(Large Object Heap)讲解。在一个托管进程被创建以后,在托管进程的内存空间里面,包含了System Domain,Shared Domain,Default Domain,Process的Heap,JIT Code heap(都... 阅读全文

posted @ 2008-07-23 09:46 gjcn 阅读(2313) 评论(12) 推荐(0) 编辑

CLR系列:窥视HashTable
摘要:哈希表(Hashtable)简述我想大家对Hashtable很熟悉,平时在工作中使用的也是比较多的,现在都是3.5了,Dictionary 的出现已经可以替代Hashtable,但是我还是想对这个Net框架使用较多的对象(举个例子:Net的CLR处理一个程序集的字符串就是采用HashTable存储在System Domain)讲解一下,因为很多新的技术都是建立在老的技术和思想上的。在.NET Fr... 阅读全文

posted @ 2008-07-07 09:59 gjcn 阅读(3555) 评论(16) 推荐(0) 编辑

c#3.0系列:Object Initializer 和 Collection Initializer
摘要:对象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers),就是简化我们的代码,让本来几行才能写完的代码一行写完。这样在LINQ的使用中,我们才不会把一个LINQ表达式写的复杂。 Object InitializersObject Initializer的使用很简单:在通过new 关键字创建对象的时候,将所需的Proeprty置于Ty... 阅读全文

posted @ 2008-04-15 11:21 gjcn 阅读(2660) 评论(8) 推荐(0) 编辑

c#3.0系列:Extension Method
摘要:我们说在C#3.0中,引入了一些列新的特性,但是个人认为Extension Method这个特性是最爽的,最有创新的。它真正的解决了:在保持现有Type原封不动的情况下对其进行扩展,你可以在对Type的定义不做任何变动的情况下,为之添加所需的方法成员。下面我就来讲讲。C#3.X出来之前大家都知道javascript有个特新Prototype,它就如同C#3.X中的Extension Method。... 阅读全文

posted @ 2008-04-11 13:16 gjcn 阅读(3456) 评论(15) 推荐(0) 编辑

c#3.0系列:Automatic Property
摘要:之前的做法:在c#3.x出来之前,相信大家已经习惯通过一个private field + public property的发式来定义和实现一个public Property。就如下面方式实现。1classperson2{3privateintage;4privatestring_name;5publicintAge6{7get{returnage;}8set{age=value;}9}10publ... 阅读全文

posted @ 2008-04-10 11:06 gjcn 阅读(2657) 评论(14) 推荐(0) 编辑

c#3.0系列:Anonymous Type In CLR(3.5)
摘要:我们说Anonymous Type是C# 3.0的新的特性,而没有说Anonymous Type是.NET Framework 3.5的新特性。这是因为Anonymous Type仅仅是.NET Programming Language和相应的Compiler的新引入的特征。而对于.NET Framework 3.5来说,它看不到这和原来有什么不同,对于Anonymous Type和一般的Named Type,对于CLR来说他们之间没有什么本质的区别。通过下面这样的一段简单的代码:1varp1=new{Name="IORI",Age=27};然后我们再看看IL:CodeCode highlig 阅读全文

posted @ 2008-04-09 14:19 gjcn 阅读(2437) 评论(9) 推荐(0) 编辑

Quiz:who win in finally vs return?
摘要:废话就不多讲了,直接看看下面的例子。1)static int Test() { int val = 1; try { return val; } finally { val = 2; } }2)static int s_val; static int Test() { s_val = 1; try { return s_val; } finally { s_val = 2; } }请问这两个例子最... 阅读全文

posted @ 2008-03-05 11:45 gjcn 阅读(2113) 评论(18) 推荐(0) 编辑

Inside C#(一些内部实现的东西)
摘要:ILDASM是个好的工具,平时也很喜欢用,它能帮助我更好的了解NET。以下我的总结,请执教。You write: public enum Compression{ Zip, SuperZip, None } The C# compiler generates: public struct Compression : Enum { public int value__; public cons... 阅读全文

posted @ 2008-03-04 11:36 gjcn 阅读(1736) 评论(7) 推荐(0) 编辑

ASP.NET应用程序的文件组成及编译过程
摘要:在一个ASP.NET应用程序中有许多保留文件夹1. Bin文件夹Bin文件夹包含应用程序所需的,用于控件、组件或者需要引用的任何其他代码的可部署程序集。该目录中存在的任何.dll文 件将自动地链接到应用程序。如果在该文件夹中留有不用的或过期的文件,则可能出现“二义性引用(ambiguous reference)”异常的风险。换句话说,如果两个不同的程序集定义相同的类(相同的... 阅读全文

posted @ 2007-08-31 09:59 gjcn 阅读(1631) 评论(0) 推荐(0) 编辑

导航