﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-片言程序</title><link>http://www.cnblogs.com/axzxs2001/</link><description>在这里记下一段学习的历程!</description><language>zh-cn</language><lastBuildDate>Mon, 13 Oct 2008 22:53:56 GMT</lastBuildDate><pubDate>Mon, 13 Oct 2008 22:53:56 GMT</pubDate><ttl>60</ttl><item><title>.net知识和学习方法系列（二十一）CLR-枚举</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/10/03/1303351.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Fri, 03 Oct 2008 03:19:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/10/03/1303351.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1303351.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/10/03/1303351.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1303351.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1303351.html</trackback:ping><description><![CDATA[<p align="left"><span style="font-family: 新宋体; font-size: 9pt">enum Complexion//</span><span style="font-family: 新宋体; font-size: 9pt">肤色</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; White,</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Black,</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Yellow</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">这是一个枚举，没有什么特别。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">说一下枚举的特点吧，其实枚举就是一系列符号和一系列对应的值，在上面的例子中，枚举的基类型是Int32类型，这是默认的类型，对应的各个枚举项，White=0,Black=1;Yellow=2;这就是一个符号与值的对应，CLR在用枚举时，是用的值，并不是符号，符号是开发人员用来能明确其值的含义的。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">所有枚举都是从System.Enum派生来的，System.Enum又是从System.ValueType派生来的，System.ValueType的父类是System.Object。即然从System.Enum派生的，当然枚举都属于值类型了。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">现在我们看看IL中的Complexion枚举是个什么样子</span></p>
<p align="left">&nbsp;</p>
<p align="left"></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/Enum_1.jpg" width="499" height="195" /></span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">在IL中我们能看到它是从System.Enum继承的，还会发现所有的符号都是一个常量，即static &nbsp;literal这个标识。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">其实可以用这样一个C#代码来说明枚举Complexion</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">Internal struct Complexion:System.Enum</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">{</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;public const Complexion White==(Complexion)0;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;public const Complexion Black==(Complexion)1;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;public const Complexion Yellow==(Complexion)2;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;public Int32 value_;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">}</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">当然，上面的代码如果写到C#环境中是编译不过的，因为System.Enum是个特殊的类，不允许派生子类型。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">在上面的伪代码中，可以看到，每个符号（White,Black,Yellow），都是一个常量，关且是Complexion类型的。</span></p>
<span style="font-family: 新宋体; font-size: 9pt">同时在Complexion内部还有一个常量，Value_，从有关资料查询说是包含一个Complexion的符号的值。同时期待了解这个变量的准确用途的朋友告知。</span>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1303351.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42969/" target="_blank">[新闻]MySpace推自助广告平台MyAds</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.net知识和学习方法系列（二十）CLR-委托</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/09/29/1301968.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Mon, 29 Sep 2008 04:59:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/09/29/1301968.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1301968.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/09/29/1301968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1301968.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1301968.html</trackback:ping><description><![CDATA[<p align="left"><span style="font-family: 新宋体; font-size: 9pt">delegate void DL(int i);</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">上面是一个委托的定义，委托向外提供了一种回调函数的机制，在.net中的委托是类型安全的，一个委托能实现对一类方法的回调，这个统一是通过委托的参数和返回值来实现的。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">上面代码如果用IL来解释，是这个样子</span></p>
<p align="left">&nbsp;</p>
<p align="left"></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/CLR_WT1.jpg" width="578" height="193" /></span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">如果用C#来表示，一个委托就成了下面的代码</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 16pt">&nbsp;</span><span style="font-family: 新宋体; font-size: 9pt">&nbsp;class DL:System .MulticastDelegate</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public DL(Object object,IntPtr method);</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual void Invoke(Int32 i);</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual IAsyncResult BeginInvoke(Int32 i,AsyncCallback callback,Object object);</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual void EndInvoke(IAsyncResult result);&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">当然，上面代码是通不过编译的，只是对应IL代码的表现。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">在上面的类中，有一个构造函数，和三个方法，同时还有三个继承至MulticastDelegate的三个非公有字段_target，_methodPtr，_invocationList。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">在构造函数中有两个参数，第一个是object类型，这里指的是被回调方法的对象，如果该方法是静态的，那么这个值就是null，第二个参数是个IntPtr，这个参数是回调方法。并且在构造器中，会把object赋给_target，IntPtr赋给_methodPtr来保存。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">另外一个字段_invocationList是一个存放回调方法的链表。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">static void Main(string[] args)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Program p = new Program();</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DL dl = new DL(p.FF);</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dl += p.FF;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dl += FF1;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dl(1);</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void FF1(int i)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("d");</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void FF(int i)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(DateTime .Now .ToString ());</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">上面代码的+=的过程，其实就是向_invocationList添加委托的过程。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">还有代码中，我们调用了dl(1)，这个代码其实是dl.Invoke(1)。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">后两个方法的使用，可参看<a href="http://www.cnblogs.com/axzxs2001/archive/2008/04/17/1157269.html">http://www.cnblogs.com/axzxs2001/archive/2008/04/17/1157269.html</a>。</span></p>
 <img src ="http://www.cnblogs.com/axzxs2001/aggbug/1301968.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42960/" target="_blank">[新闻]Facebook创始人:信息共享或存摩尔定律</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.net知识和学习方法系列（十九）CLR-事件</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/09/21/1295437.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Sun, 21 Sep 2008 12:20:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/09/21/1295437.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1295437.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/09/21/1295437.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1295437.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1295437.html</trackback:ping><description><![CDATA[<p align="left"><span style="font-family: 宋体">在</span>C#<span style="font-family: 宋体">中，事件究竟是什么呢？</span></p>
<p align="left"><span style="font-family: 宋体">首先来定义一个事件：</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">public event EventHandler SJ;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">编译后，我们可以它的IL：</span></p>
<p align="left"></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/Event_CLR_1.jpg" width="339" height="136" /></span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">可以看到，IL中的事件并不是单纯的事件了，其实是分解成一个委托和两个方法了，如下代码：</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">private EvntHandler WT=null;</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">[MethodTmpl(MethodImplOptions.Synchronized)]</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">public void add_WT(EventHandler value)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">{</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp; WT=(EventHandler)Delegate.Combine(WT,value)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">}</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">[MethodTmpl(MethodImplOptions.Synchronized)]</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">public void remove_WT(EventHandler value)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">{</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">&nbsp;&nbsp; WT=(EventHandler)Delegate.Remove(WT,value)</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">}</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">其实就是一个委托作为字段，还提供了两上方法，一个是向委托列表中添加委托，一个是从委托列表中移除委托。</span></p>
<p align="left"><span style="font-family: 新宋体; font-size: 9pt">其实这里的add和remove对应着事件的+=和-=，假如我们WT+=new EventHandler(方法名),其实就是调用add_WT,把new EventHandler（方法）这个委托加入到委托列表中。</span></p>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1295437.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42959/" target="_blank">[新闻]微软承认Vista用户账户控制功能有问题</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.net知识和学习方法系列（十八）CLR-构造函数</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/09/18/1293643.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Thu, 18 Sep 2008 12:40:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/09/18/1293643.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1293643.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/09/18/1293643.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1293643.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1293643.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt"><span style="font-family: 宋体">构造函数也叫构造方法，是一个比较特殊的函数，因为它没有返加回值，并且名称与所在类的类名相同。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">构造函数有两种，一种是实例构造函数，一种是静态构造函数。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">现有一个类：</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; <span style="color: blue">class</span> <span style="color: #2b91af">Test</span></span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">}</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">这个类与下面的类完全等价</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; <span style="color: blue">class</span> <span style="color: #2b91af">Test</span></span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">static</span> Test()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;}</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">也就是说，如果定义完一个类后，IDE会自动在类的内部定义一个静态构造函和和一个实例化函数的。</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">这两个构造函数是有区别，静态构造函数只在该类的第一个对象被实例化时才调用，而实例化构造函数，则是在每次对象被实例化时调用。</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-family: 宋体">实例构造函数可以有多个，通过参数来区分，或者参数的个数不同，或者参数的类型不能，也就是所谓的重载。但静态构造函数则有且只能有一个，并且不能有任何参数。</span></p>
<p style="text-indent: 17.25pt" align="left">&nbsp;</p>
<p style="text-indent: 17.25pt" align="left"><span style="font-family: 宋体">下面再看一下这个例子</span></p>
<p style="text-indent: 4.5pt" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">class</span><span style="font-size: 9pt; font-family: 新宋体"> <span style="color: #2b91af">Test</span></span></p>
<p style="text-indent: 4.5pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">{</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">int</span> a=1, b=2, c=3;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">int</span> d;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test(<span style="color: blue">int</span> i)</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test(<span style="color: blue">string</span> s)</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; </span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">}</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">表面上看来没有什么，就是一个类中有三个构造函数，还有三个字段。</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">现在让我们看看IL吧</span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体"><img height="153" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/GZHZ_a.jpg" width="267" border="0" /></span></p>
<p style="text-indent: 17.25pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">首先看一下这个类的IL</span></p>
<p style="text-indent: 17.25pt" align="left"></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">其中三个.ctor就是三个实例构造函数，双击三个构造函数来看一下它的IL代码：</span></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">Test()</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">&#8594;.ctor:void()</span></strong></p>
<p align="left"><span style="font-family: Fixedsys">.method public hidebysig specialname rtspecialname </span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp;.ctor() cil managed</span></p>
<p align="left"><span style="font-family: Fixedsys">{</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;// </span><span style="font-family: Fixedsys">代码大小</span><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 (0x1f)</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;.maxstack&nbsp;8</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0000:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0001:&nbsp;ldc.i4.1</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0002:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::a</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0007:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0008:&nbsp;ldc.i4.2</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0009:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::b</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000e:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000f:&nbsp;ldc.i4.3</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0010:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int32 ConsoleApplication1.Test::c</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0015:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0016:&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void [mscorlib]System.Object::.ctor()</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001b:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001c:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001d:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001e:&nbsp;ret</span></p>
<p align="left"><span style="font-family: Fixedsys">} // end of method Test::.ctor</span></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">Test(int i)</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">&#8594;.ctor:void(int32)</span></strong></p>
<p align="left"><span style="font-family: Fixedsys">.method public hidebysig specialname rtspecialname </span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp;.ctor(int32 i) cil managed</span></p>
<p align="left"><span style="font-family: Fixedsys">{</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;// </span><span style="font-family: Fixedsys">代码大小</span><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 (0x1f)</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;.maxstack&nbsp;8</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0000:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0001:&nbsp;ldc.i4.1</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0002:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::a</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0007:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0008:&nbsp;ldc.i4.2</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0009:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::b</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000e:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000f:&nbsp;ldc.i4.3</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0010:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::c</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0015:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0016:&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void [mscorlib]System.Object::.ctor()</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001b:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001c:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001d:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001e:&nbsp;ret</span></p>
<p align="left"><span style="font-family: Fixedsys">} // end of method Test::.ctor</span></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">Test(string s)</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">&#8594;.ctor:void(string)</span></strong></p>
<p align="left"><span style="font-family: Fixedsys">.method public hidebysig specialname rtspecialname </span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp;.ctor(string s) cil managed</span></p>
<p align="left"><span style="font-family: Fixedsys">{</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;// </span><span style="font-family: Fixedsys">代码大小</span><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 (0x1f)</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;.maxstack&nbsp;8</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0000:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0001:&nbsp;ldc.i4.1</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0002:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::a</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0007:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0008:&nbsp;ldc.i4.2</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0009:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::b</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000e:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000f:&nbsp;ldc.i4.3</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0010:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::c</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0015:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0016:&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void [mscorlib]System.Object::.ctor()</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001b:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001c:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001d:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001e:&nbsp;ret</span></p>
<p align="left"><span style="font-family: Fixedsys">} // end of method Test::.ctor</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: Fixedsys">很明显的看到</span><span style="font-family: Fixedsys">，</span><span style="font-family: Fixedsys">三个实例构造函数都对</span><span style="font-family: Fixedsys">a,b,c</span><span style="font-family: Fixedsys">进行了初始化赋值</span><span style="font-family: Fixedsys">，</span><span style="font-family: Fixedsys">即造成了代码的重复。</span></p>
<p align="left"><span style="font-family: Fixedsys">如果初始化的字段更多，构造函数更多，重复量就更大。</span></p>
<p align="left"><span style="font-family: Fixedsys">但值的注意的是，在Test类中有一个字段d，没有初始化，并且在所有的构造函数中也没有发现它，这个，就给我们避免代码重复提供了一个方法。</span></p>
<p align="left"><span style="font-family: Fixedsys">改造一下上面的代码：</span></p>
<p align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">class</span><span style="font-size: 9pt; font-family: 新宋体"> <span style="color: #2b91af">Test</span></span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">int</span>&nbsp;a,b,c;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">int</span> d;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = 1;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = 2;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c = 3;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test(<span style="color: blue">int</span> i):<span style="color: blue">this</span>()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> Test(<span style="color: blue">string</span> s):<span style="color: blue">this</span>()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: Fixedsys">就在类中，先不去初始化字段，只在没有参数的实例构造函数中初始化，用其他构造函数来调用它，现在来看一下IL</span></p>
<p align="left">&nbsp;</p>
<p align="left"></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体"><img height="153" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/GZHZ_a.jpg" width="267" border="0" /></span></strong></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">Test()</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">&#8594;.ctor:void()</span></strong></p>
<p align="left"><span style="font-family: Fixedsys">.method public hidebysig specialname rtspecialname </span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp;.ctor() cil managed</span></p>
<p align="left"><span style="font-family: Fixedsys">{</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;// </span><span style="font-family: Fixedsys">代码大小</span><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 31 (0x1f)</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;.maxstack&nbsp;8</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0000:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0001:&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void [mscorlib]System.Object::.ctor()</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0006:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0007:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0008:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0009:&nbsp;ldc.i4.1</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000a:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::a</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_000f:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0010:&nbsp;ldc.i4.2</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0011:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::b</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0016:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0017:&nbsp;ldc.i4.3</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0018:&nbsp;stfld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int32 ConsoleApplication1.Test::c</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001d:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_001e:&nbsp;ret</span></p>
<p align="left"><span style="font-family: Fixedsys">} // end of method Test::.ctor</span></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">Test(int i)</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">&#8594;.ctor:void(int32)</span></strong></p>
<p align="left"><span style="font-family: Fixedsys">.method public hidebysig specialname rtspecialname </span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp;.ctor(int32 i) cil managed</span></p>
<p align="left"><span style="font-family: Fixedsys">{</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;// </span><span style="font-family: Fixedsys">代码大小</span><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 (0xa)</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;.maxstack&nbsp;8</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0000:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0001:&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void ConsoleApplication1.Test::.ctor()</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0006:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0007:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0008:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0009:&nbsp;ret</span></p>
<p align="left"><span style="font-family: Fixedsys">} // end of method Test::.ctor</span></p>
<p align="left"><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">Test(string s)</span></strong><strong><span style="font-size: 9pt; color: red; font-family: 新宋体">&#8594;.ctor:void(string)</span></strong></p>
<p align="left"><span style="font-family: Fixedsys">.method public hidebysig specialname rtspecialname </span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void&nbsp;.ctor(string s) cil managed</span></p>
<p align="left"><span style="font-family: Fixedsys">{</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;// </span><span style="font-family: Fixedsys">代码大小</span><span style="font-family: Fixedsys">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 (0xa)</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;.maxstack&nbsp;8</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0000:&nbsp;ldarg.0</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0001:&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance void ConsoleApplication1.Test::.ctor()</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0006:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0007:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0008:&nbsp;nop</span></p>
<p align="left"><span style="font-family: Fixedsys">&nbsp;IL_0009:&nbsp;ret</span></p>
<p align="left"><span style="font-family: Fixedsys">} // end of method Test::.ctor</span></p>
<p align="left"><span style="font-family: 宋体">会发现，在有参数的两个构造函数中的</span>IL<span style="font-family: 宋体">要少很多，这样就能减少</span>IL<span style="font-family: 宋体">代码量。</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: 宋体">在类中，如果有初始化的静态字段，会在静态构造函数中来实现，不过静态构造函数只能有一个，所以这个在代码量中问题不会存在。</span></p>
<p align="left">&nbsp;</p>
<span style="font-size: 10.5pt; font-family: 宋体">可以看出，在类中，如果有初始化的字段，他的执行要先于对象的生成，即构造函数的执行（完全执行）。</span>
 <img src ="http://www.cnblogs.com/axzxs2001/aggbug/1293643.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42958/" target="_blank">[新闻]资本寒冬侵袭中国视频网站 营销春天或不远</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.net知识和学习方法系列（十七）CLR-CLR中的值类型和引用类型</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/09/15/1291090.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Mon, 15 Sep 2008 05:12:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/09/15/1291090.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1291090.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/09/15/1291090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1291090.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1291090.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt">C#<span style="font-family: 宋体">中有谈到两种类型，值类型和引用类型（其实是</span>CLR<span style="font-family: 宋体">支持两种类型）。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">值类型包括：简单类型（</span>int ,double,long,bool,char<span style="font-family: 宋体">等，</span>string<span style="font-family: 宋体">除外），</span>struct,enum</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">引用类型：委托，类，接口，</span>string<span style="font-family: 宋体">，数组等</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">如果更简单的说，值类型就是结构和枚举，所有的简单类型都是一个结构，结构是从</span>System.ValudType<span style="font-family: 宋体">这个类继承下来的，枚举也继承至</span>System.ValueType<span style="font-family: 宋体">，</span>SystemValueType<span style="font-family: 宋体">的父类是</span>System.Object<span style="font-family: 宋体">。引用类型中典型的是类，所有类都继</span>System.Object<span style="font-family: 宋体">；</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">值类型位于线程堆栈中，引用类型位于托管堆中</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">先看如下代码：</span></p>
<p style="text-indent: 21pt">cass Test_Class</p>
<p style="text-indent: 21pt">{</p>
<p style="text-indent: 21pt">&nbsp;public int i=10;</p>
<p style="text-indent: 21pt">}</p>
<p style="text-indent: 21pt">static void Main()</p>
<p style="text-indent: 21pt">{</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; int i=5;</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; Text_Class test=new Test_Class();</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; test.i=100;</p>
<p style="text-indent: 21pt">}</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我们来看一下在线程堆栈和托管理堆在内存中的表示</span></p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt" align="center"></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/CLR_a.jpg" width="363" height="216" /></span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">线程堆栈中的</span>i<span style="font-family: 宋体">是</span>Main<span style="font-family: 宋体">方法中的局部变量，托管理堆中的</span>i<span style="font-family: 宋体">是</span>test<span style="font-family: 宋体">对象的一个字段。</span></p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我们对代码修一下</span></p>
<p style="text-indent: 21pt">cass Test_Class</p>
<p style="text-indent: 21pt">{</p>
<p style="text-indent: 21pt">&nbsp;public int i=10;</p>
<p style="text-indent: 21pt">}</p>
<p style="text-indent: 21pt">static void Main()</p>
<p style="text-indent: 21pt">{</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; int i=5;</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; int j=I;</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; Text_Class test=new Test_Class();</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; test.i=100;</p>
<p style="text-indent: 21pt">&nbsp;&nbsp; Text_Class test1=test;</p>
<p style="text-indent: 21pt">}</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">这段代码在执行时，对应的的线程堆栈和托管堆图解如下：</span></p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt" align="center"></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/CLR_B.jpg" /></span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">从上图我们就能看出值类型与引用类型的区别，值类型是具体的值，相互之间没有关系，引用类型是一个引用，如果两个对象指向一个引用，它们之间就互相影响。</span></p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">说到值类型和引用类型不得不说一下装箱和折箱：</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">装箱，是将值类型转换成引用类型，折箱正好相反。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">装箱的过程在内存中是怎样一个过程呢？</span></p>
<p style="text-indent: 21pt">Static void Main()</p>
<p style="text-indent: 21pt">{</p>
<p style="text-indent: 21pt">&nbsp;int i=5;</p>
<p style="text-indent: 21pt">&nbsp;object o=I; //<span style="font-family: 宋体">装箱</span></p>
<p style="text-indent: 21pt">&nbsp;int j=(int)o; //<span style="font-family: 宋体">折箱</span></p>
<p style="text-indent: 21pt">}</p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt"></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体"><img border="0" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/CLR_C.jpg" /></span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">装箱过程</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt">1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">从托管堆上分配内存，并增加两个成员&#8220;类型对象指针&#8221;和&#8220;同步块索引&#8221;</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">将值</span>i=5<span style="font-family: 宋体">复制在上一步分配的托管堆中</span></p>
<p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">把托管堆上的地址返回给</span>o</p>
<p style="margin: 0cm 0cm 0pt 21pt"><span style="font-family: 宋体">需要说明的是，装箱时，</span>o<span style="font-family: 宋体">能记录下</span>i<span style="font-family: 宋体">的准确类型，也就是在折箱的时，折出的是具体的类型。</span></p>
<p><span style="font-family: 宋体">折箱相对简单，只是把堆中的数据部分取出来存到线程堆栈中对应的变量中。</span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">装箱和折箱定义上相对简单，但在应用是上是很有技巧的，比如下面例子：</span></p>
<p>1<span style="font-family: 宋体">、</span>Console.WriteLine(&#8220;<span style="font-family: 宋体">当前时间：</span>&#8221;+DateTime.Now);</p>
<p>2<span style="font-family: 宋体">、</span>ConsoleWriteLine(&#8220;<span style="font-family: 宋体">当前时间：</span>&#8221;+DateTime.Now.ToString());</p>
<span style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt">1</span><span style="font-family: 宋体; font-size: 10.5pt">和</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt">2</span><span style="font-family: 宋体; font-size: 10.5pt">是有区别的，因为</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt">1</span><span style="font-family: 宋体; font-size: 10.5pt">中，存在一个装箱，而</span><span style="font-family: 'Calibri','sans-serif'; font-size: 10.5pt">2</span><span style="font-family: 宋体; font-size: 10.5pt">中，在转换后进行输出，相对来说性能要好一点。所以这类问题时，要注意方法的参数类型，在处理好类型后再传参，这样效率高些。</span> 
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1291090.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42957/" target="_blank">[新闻]金融风暴波及全球创业板 中国概念股难独善其身</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.net知识和学习方法系列（十六）CLR－托管理程序和它的运行</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/09/12/1290164.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Fri, 12 Sep 2008 11:51:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/09/12/1290164.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1290164.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/09/12/1290164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1290164.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1290164.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt"><span style="font-family: 宋体">大家都知道，</span>vs<span style="font-family: 宋体">生成的是托管理程序（不管是</span>VB.net<span style="font-family: 宋体">还是</span>C#<span style="font-family: 宋体">），托管理程序是什么呢？托管这个词就能隐约得告诉我们，这个程序运行时不那么&#8220;单纯&#8221;，其实，托管理程序是不可以直接在</span>CPU<span style="font-family: 宋体">上运行的，至于为什么，我们先看一下托管程序的组成部分。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">一般托管理程序分为</span></p>
<p style="text-indent: 21pt">PE<span style="font-family: 宋体">文件头：包含文件的类型，还有生成文件的时间</span></p>
<p style="text-indent: 21pt">CLR<span style="font-family: 宋体">头：包含</span>CLR<span style="font-family: 宋体">版本，入口方法的元数据标记</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">元数据：定义的类型和成员，引用的类型和成员</span></p>
<p style="text-indent: 21pt">IL<span style="font-family: 宋体">（中间语言）：编译源代码时生成的代码</span></p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">现在来看一下托管理代码的运行，有这样一个简单的方法</span></p>
<p style="text-indent: 21pt">using System;</p>
<p style="text-indent: 21pt">class Democlass</p>
<p style="text-indent: 21pt">{</p>
<p style="text-indent: 21pt">&nbsp;&nbsp;&nbsp; static void Main()</p>
<p style="text-indent: 21pt"><span>&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-indent: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("<span style="font-family: 宋体">谢谢！</span>");</p>
<p style="text-indent: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("<span style="font-family: 宋体">阅读。</span>");</p>
<p style="text-indent: 63pt">Console.WriteLine("<span style="font-family: 宋体">再见！</span>");</p>
<p style="text-indent: 21pt">&nbsp;&nbsp;&nbsp; }</p>
<p style="text-indent: 21pt">}</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当</span>IDE<span style="font-family: 宋体">把把这个代码编译成</span>exe<span style="font-family: 宋体">后，我们运行起这个</span>exe(<span style="font-family: 宋体">当然是在装有</span>.net Framework<span style="font-family: 宋体">的计算机上</span>)<span style="font-family: 宋体">，首先</span>CLR<span style="font-family: 宋体">会扫描所有这个</span>Main<span style="font-family: 宋体">方法中的类型，然后会创建一个用于管理这些类型的数据结构，虽然本例中只有一种类型</span>Console<span style="font-family: 宋体">，并且还是一个静态类。在这个数据结构中，存放着很到记录，每个记录与</span>Console<span style="font-family: 宋体">的一个方法对应着，每个记录中，包含着一个指向方法实现的内存地址。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当这个数据结构初始化时，</span>CLR<span style="font-family: 宋体">就将数据结构中的每条记录指向一个在</span>CLR<span style="font-family: 宋体">中已定义好的方法</span>CallMethod(<span style="font-family: 宋体">我假设的名子</span>)<span style="font-family: 宋体">，这个方法能根据记录找到方法实现，当执行</span>Console.WriteLine(&#8220;<span style="font-family: 宋体">谢谢！</span>&#8221;)<span style="font-family: 宋体">时，会在数据结构中找到对应的记录，这个记录会调起</span>CallMethod<span style="font-family: 宋体">方法，</span>CallMethod<span style="font-family: 宋体">这个方法要实现</span>&nbsp;<span style="font-family: 宋体">步骤如下：</span></p>
<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt">A.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">调用元数据中的</span>WriteLine<span style="font-family: 宋体">方法</span>(<span style="font-family: 宋体">因为记录与</span>CallMethod<span style="font-family: 宋体">关联，记录指向方法的实现地址，所以</span>CallMethod<span style="font-family: 宋体">能调用</span>WriteLine<span style="font-family: 宋体">方法</span>)</p>
<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt">B.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">从元数据中得到这个方法的</span>IL</p>
<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt">C.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">申请一块内存空间</span></p>
<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt">D.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">把这个方法编译成</span>CPU<span style="font-family: 宋体">指令，放到申请的内存空间中</span></p>
<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt">E.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">然后这个方法返回到这个数据结构中的</span>WriteLine<span style="font-family: 宋体">方法对应的那条记录，用申请的内存地址替换掉这个记录包含指向方法实现的内存地址（这里就是用</span>CPU<span style="font-family: 宋体">指令所在的内存地址替换掉了实现方法的内存地址）</span></p>
<p style="margin: 0cm 0cm 0pt 42pt; text-indent: -21pt">F.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">返回</span>Main<span style="font-family: 宋体">方法的</span>Console.WriteLine(&#8220;<span style="font-family: 宋体">阅读</span>&#8221;)</p>
<p style="margin: 0cm 0cm 0pt 21pt">&nbsp;</p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">当</span>CLR<span style="font-family: 宋体">执行</span>Main<span style="font-family: 宋体">方法的</span>Console.WriteLine(&#8220;<span style="font-family: 宋体">阅读</span>&#8221;)<span style="font-family: 宋体">时，因为记录中的内存地址已变成了</span>CPU<span style="font-family: 宋体">指令所在的内存地址，所以这次，</span>CallMethod<span style="font-family: 宋体">方法就不用被重新调用，这就说明，一旦该方法第一次被调用过，以后的调用就相对的节省资源了。直到该程序中止退出。</span></p>
<span style="font-size: 10.5pt; font-family: 宋体">如果该程序在一台计算机上启动了两个，它们的这个该方法的</span><span style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'">CPU</span><span style="font-size: 10.5pt; font-family: 宋体">指令是不会被共用的，因为他们不在一个</span><span style="font-size: 10.5pt; font-family: 'Calibri','sans-serif'">Application Domain</span><span style="font-size: 10.5pt; font-family: 宋体">，不能跨域访问。</span>
 <img src ="http://www.cnblogs.com/axzxs2001/aggbug/1290164.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42956/" target="_blank">[新闻]携程范敏：CEO从接发传真做起</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Internet Explorer 8 Beta2 常见问题解答</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/09/04/1284293.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Thu, 04 Sep 2008 10:34:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/09/04/1284293.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1284293.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/09/04/1284293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1284293.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1284293.html</trackback:ping><description><![CDATA[<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt">Internet Explorer 8 Beta2 <span style="font-family: 宋体">常见问题解答</span></p>
<p style="text-indent: 21pt">http://forums.microsoft.com/china/ShowPost.aspx?PostID=3832844&amp;SiteID=15&amp;mode=1</p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt">Internet Explorer 8 Beta2 Top Features</p>
<p style="text-indent: 21pt">http://forums.microsoft.com/china/ShowPost.aspx?PostID=3832911&amp;SiteID=15&amp;mode=1</p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt">IE 8 Beta 2<span style="font-family: 宋体">中文版首份试用体验</span></p>
<p style="text-indent: 21pt">http://forums.microsoft.com/china/ShowPost.aspx?PostID=3832938&amp;SiteID=15</p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt">Vista</p>
<p style="text-indent: 21pt">http://forums.microsoft.com/china/ShowForum.aspx?ForumID=1707&amp;SiteID=15</p>
<p style="text-indent: 21pt">&nbsp;</p>
<p style="text-indent: 21pt">http://angelmartina.blog.51cto.com/</p>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1284293.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42955/" target="_blank">[新闻]2008年10月13日科技博客精选</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>.net知识和学习方法系列（十五）类型，对象，堆栈和托管堆</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/08/28/1279037.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Thu, 28 Aug 2008 15:32:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/08/28/1279037.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1279037.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/08/28/1279037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1279037.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1279037.html</trackback:ping><description><![CDATA[&nbsp;
<p style="margin-left: 18pt; text-indent: -18pt"><strong><span style="font-size: 18pt">1、<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></strong><strong><span style="font-size: 18pt; font-family: 宋体">类型，对象，堆栈和托管堆</span></strong><strong></strong></p>
<p style="margin-left: 18pt">C#<span style="font-family: 宋体">的类型和对象在应用计算机内存时，大体用到两种内存，一个叫<strong>堆栈</strong>，另一个叫<strong>托管堆</strong>，下面我们用直角长方形来代表堆栈，用圆角长方形来代表托管堆。</span></p>
<p style="margin-left: 18pt">&nbsp;</p>
<p style="margin-left: 18pt"><img height="155" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc1.jpg" width="323" border="0" />&nbsp;</p>
<p style="margin-left: 18pt"><span style="font-family: 宋体">首先讨论一下方法内部变量的存放。</span></p>
<p style="margin-left: 18pt"><span style="font-family: 宋体">先举个例子，有如下两个方法，</span>Method_1<span style="font-family: 宋体">和</span>Add<span style="font-family: 宋体">，分别如下：</span></p>
<p style="margin-left: 18pt">public void Method_1()</p>
<p style="margin-left: 18pt">{</p>
<p style="margin-left: 18pt">&nbsp;int value1=10;<span style="font-family: 宋体">　　</span>//1</p>
<p style="margin-left: 18pt">&nbsp;int value2=20;&nbsp;&nbsp;&nbsp; //2</p>
<p style="margin-left: 18pt">&nbsp;int value3=Add(value,value); //3 </p>
<p style="margin-left: 18pt">}</p>
<p style="margin-left: 18pt">public int Add(int n1,int n2)//4</p>
<p style="margin-left: 18pt">{</p>
<p style="margin-left: 18pt">&nbsp;&nbsp; rnt sum=n1+n2;//5</p>
<p style="margin-left: 18pt">&nbsp;&nbsp; return sum;//6</p>
<p style="margin-left: 18pt">}</p>
<p style="margin-left: 18pt"><span style="font-family: 宋体">这段代码的执行，用图表示为：</span></p>
<p style="margin-left: 18pt">&nbsp;</p>
<p style="margin-left: 18pt"><span style="font-family: 宋体"><img height="386" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc2.jpg" width="196" border="0" /></span></p>
<p style="margin-left: 18pt"><span style="font-family: 宋体"><img height="517" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc3.jpg" width="190" border="0" /></span></p>
<p style="margin-left: 18pt"><span style="font-family: 宋体">上述的每个图片，基本对应程序中的每个步骤。在开始执行</span>Method_1<span style="font-family: 宋体">的时候，先把</span>value1<span style="font-family: 宋体">压入堆栈顶，然后是</span>value2<span style="font-family: 宋体">，接下来的是调用方法</span>Add<span style="font-family: 宋体">，因为方法有两个参数是</span>n1<span style="font-family: 宋体">和</span>n2<span style="font-family: 宋体">，所以把</span>n1<span style="font-family: 宋体">和</span>n2<span style="font-family: 宋体">分别压入堆栈，因为此处是调用了一个方法，并且方法有返回值，所以这里需要保存</span>Add<span style="font-family: 宋体">的返回地址，然后进入</span>Add<span style="font-family: 宋体">方法内部，在</span>Add<span style="font-family: 宋体">内部，首先是给</span>sum<span style="font-family: 宋体">赋值，所以把</span>sum<span style="font-family: 宋体">压入栈项，然后用</span>return<span style="font-family: 宋体">返回，此时，先前的返回地址就起到了作用，</span>return<span style="font-family: 宋体">会根据地址返回去的，在返回的过程中，把</span>sum<span style="font-family: 宋体">推出栈顶，找到了返回地址，但在</span>Method_1<span style="font-family: 宋体">方法中，我们希望把</span>Add<span style="font-family: 宋体">的返回值赋给</span>value3<span style="font-family: 宋体">，此时的返回地址也被推出堆栈，把</span>value3<span style="font-family: 宋体">压入堆栈。虽这个例子的结果在这里没有多大用途，但这个例子很好的说明了在方法被执行时，变量与进出堆栈的情况。这里也能看出为什么方法内部的局变量用过后，不能在其他方法中访问的原因。</span></p>
<p style="margin-left: 18pt">&nbsp;</p>
<p style="margin-left: 18pt"><span style="font-family: 宋体">其次来讨论一下类和对象在托管堆和堆栈中的情况。</span></p>
<p style="margin-left: 18pt"><span style="font-family: 宋体">先看一下代码：</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; <span style="color: blue">class</span> <span style="color: #2b91af">Car</span></span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> <span style="color: blue">void</span> Run()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: 新宋体">一切正常"</span><span style="font-size: 9pt; font-family: 新宋体">);</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> <span style="color: blue">virtual</span> <span style="color: blue">double</span> GetPrice()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">return</span> 0;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> <span style="color: blue">static</span> <span style="color: blue">void</span> Purpose()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: 新宋体">载人"</span><span style="font-size: 9pt; font-family: 新宋体">);</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; <span style="color: blue">class</span> <span style="color: #2b91af">BMW</span> : <span style="color: #2b91af">Car</span></span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> <span style="color: blue">override</span> <span style="color: blue">double</span> GetPrice()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">return</span> 800000;</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-indent: 18pt"><span style="font-size: 9pt; font-family: 新宋体">}</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">上面是两个类，一个Father一个Son，Son继承了Father，因为你类中有一个virtual的BuyHouse方法，所以Son类可以重写这个方法。</span></p>
<p style="margin-left: 18pt"><span style="font-size: 9pt; font-family: 新宋体">下面接着看调用代码。</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">public</span> <span style="color: blue">void</span> Method_A()</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue">double</span> CarPrice;//1</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #2b91af">Car</span> car = <span style="color: blue">new</span> <span style="color: #2b91af">BMW</span>();//2</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CarPrice = car.GetPrice();<span style="color: green">//</span></span><span style="font-size: 9pt; color: green; font-family: 新宋体">调用虚方法（其实调用的是重写后的方法）</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; car.Run();<span style="color: green">//</span></span><span style="font-size: 9pt; color: green; font-family: 新宋体">调用实例化方法</span></p>
<p align="left"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #2b91af">Car</span>.Purpose();<span style="color: green">//</span></span><span style="font-size: 9pt; color: green; font-family: 新宋体">调用静态方法</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;}</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">这个方法也比较简单，就是定义一个变量用来获得价格，同时定义了一个父类的变量，用子类来实例化它。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">接下来，我们分步来说明。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">看一下运行时堆栈和托管堆的情部我：</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><img height="349" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc4.jpg" width="391" border="0" />&nbsp;</p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">这里需要说明的是，类是位于托管堆中的，每个类又分为四个类部，类指针，用来关联对象；同步索引，用来完成同步(比如线程的同步)需建立的；静态成员是属于类的，所以在类中出现，还有一个方法列表（这里的方法列表项与具体的方法对应）。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">当</span>Method_A<span style="font-family: 宋体">方法的第一步执行时：</span>&nbsp;</p>
<p style="margin-left: 18pt; text-indent: 17.25pt">&nbsp;<img height="96" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc5.jpg" width="152" border="0" /><span style="font-family: 宋体">这时的</span>CarPrice<span style="font-family: 宋体">是没有值的</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">当</span>Method_A<span style="font-family: 宋体">方法执行到第二步，其实第二步又可以分成</span></p>
<p style="text-indent: 45pt" align="left"><span style="font-size: 9pt; color: #2b91af; font-family: 新宋体">Car</span><span style="font-size: 9pt; font-family: 新宋体"> car;</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;car = <span style="color: blue">new</span> <span style="color: #2b91af">BMW</span>();</span></p>
<p style="text-indent: 45pt" align="left"><span style="font-size: 9pt; font-family: 新宋体">先看<span style="color: #2b91af">Car</span> car;</span></p>
<p style="text-indent: 45pt" align="left"><img height="96" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc6.jpg" width="157" border="0" />&nbsp;</p>
<br clear="all" />
<p style="margin-left: 18pt; text-indent: 17.25pt">car<span style="font-family: 宋体">在这里是一个方法内部的变量，所以被压到堆栈中。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">&nbsp;</span><span style="font-size: 9pt; font-family: 新宋体">再看 car = <span style="color: blue">new <span style="color: #2b91af">BMW</span>();</span></span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-size: 9pt; font-family: 新宋体">这是一个实例化过程，car变成了一个对象</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><img height="352" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/nc7.jpg" width="476" border="0" />&nbsp;</p>
<p style="margin-left: 18pt; text-indent: 17.25pt">&nbsp;</p>
<br clear="all" />
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">这里是用子类来实例化父类型。对象其实是子类的类型的，但变量的类型是父类的。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">接下来，在</span>Method_A<span style="font-family: 宋体">中的调用的中调用</span>car.GetPrice()<span style="font-family: 宋体">，对于</span>Car<span style="font-family: 宋体">来说，这个方法是虚方法（并且子类重写了它），虚方法在调用是不会执行类型上的方法，即不会执行</span>Car<span style="font-family: 宋体">类中的虚方法，而是执行对象对应类上的方法，即　</span>BMW<span style="font-family: 宋体">中的</span>GtPrice<span style="font-family: 宋体">。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">如果</span>Method_A<span style="font-family: 宋体">中执行方法</span>Run()<span style="font-family: 宋体">，因为</span>Run<span style="font-family: 宋体">是普通实例方法，所以会执行</span>Car<span style="font-family: 宋体">类中的</span>Run<span style="font-family: 宋体">方法。</span></p>
<p style="margin-left: 18pt; text-indent: 17.25pt"><span style="font-family: 宋体">如果调用了</span>Method_A<span style="font-family: 宋体">的</span><span style="font-size: 9pt; font-family: 新宋体">Purpose</span><span style="font-size: 9pt; font-family: 新宋体">方法，即不用变量car调用，也不用对象调用，而是用类名Car调用，因为静态方法会在类中分配内存的。如果用Car生成多个实例，静态成员只有一份，就是在类中，而不是在对象中。</span></p>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1279037.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42954/" target="_blank">[新闻]Google Android手机大受欢迎,已经订出150万台</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>应用程序域(Application Domain)</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/07/20/1246980.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Sun, 20 Jul 2008 03:51:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/07/20/1246980.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1246980.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/07/20/1246980.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1246980.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1246980.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">大家都知道，<span lang="EN-US">.net</span>写的程序，都是托管的，何为托管？就是让&#8220;其他的程序&#8221;来管理，也解析运行，什么又在这里充当&#8220;其他程序&#8221;呢？这里大体上说是<span lang="EN-US">CLR(</span>通用语言运行时<span lang="EN-US">)</span>，这只是大体上的，准确的在底层是怎么去处理托管程序与操作系统间的关系呢<span lang="EN-US">?<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">操作系统上运行的都是进程，这进程是非托管的。现在。我们有一个<span lang="EN-US">Demo.exe</span>，他是用<span lang="EN-US">.net</span>写的（这里与语言无关了，因为编设成程序集后，都成为<span lang="EN-US">IL</span>语言了），当然是一个托管理程序。这里的问题就是怎么把<span lang="EN-US">Demo.exe</span>变成一个进程，运行在操作系统的进程中。这里就引出了应用程序域（<span lang="EN-US">Application Domain</span>），应用程序域<span lang="EN-US">(Application Domain)</span>是&#8220;托管理代码与非托管理代码之间的桥梁&#8221;（引自《<span lang="EN-US">.NET</span>组件编程设计》），进程，应用程序域，<span lang="EN-US">.net</span>程序集（这里是<span lang="EN-US">Demo.exe</span>），之间的关系可以见下图：</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="center"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span lang="EN-US"><o:p></o:p></span></span>&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center; mso-layout-grid-align: none" align="center"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">
<div align="center"><img height="200" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/AppDomain1.jpg" width="300" border="0" /></div>
<div align="center">(图1)</div>
一个进程中可以有多个应用程序域（<span lang="EN-US">Application Domain</span>），一个应用程序域（<span lang="EN-US">Application Domain</span>）中可以有多个程序集。<span lang="EN-US"><o:p></o:p></span></span>
<p>&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">应用程序域（<span lang="EN-US">Application Domain</span>）的引入的好处在于，如果一个程序集出现错误，不会影响到别的应用程序域（<span lang="EN-US">Application Domain</span>），同时他们又是一个进程中的。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">在<span lang="EN-US">.net</span>中，应用程序域（<span lang="EN-US">Application Domain</span>）是用<span lang="EN-US">AppDomain</span>类来表示的。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">AppDomain CurrentAD=AppDomain.CurrentDomain;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">上面的代码实现了获取当有程序集所在的应用程序域（<span lang="EN-US">Application Domain</span>）。获取当前应用程序域（<span lang="EN-US">Application Domain</span>）还可以通过当前线程来得到，如下：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">AppDomain CurrentAD=Threed.GetDomain();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">下面再看一下在当前应用程序域（<span lang="EN-US">Application Domain</span>）中创建对象：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">类：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">Class Class1<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Public void FF()<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 9pt; mso-layout-grid-align: none; mso-char-indent-count: 1.0"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 9pt; mso-layout-grid-align: none; mso-char-indent-count: 1.0"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp; </span>//</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">实现功能<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 9pt; mso-layout-grid-align: none; mso-char-indent-count: 1.0"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">}<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">AppDomain CurrentAD=Threed.GetDomain();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">Class1 C1=(Class1)CurrentAD.CreateInstanceAndUnwrap(</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8220;</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">程序集名称</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">,</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">名命空间<span lang="EN-US">.</span>类名</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">C1.FF();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">这个是关于当前的应用程序域（<span lang="EN-US">Application Domain</span>）的操作，怎么创建一个应用程序域（<span lang="EN-US">Application Domain</span>）呢？看下面<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">AppDomain MyAppDomain=AppDomain.CreatDomain(</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8220;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">MyNewAD</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">Class1 C1=(Class1)<font style="color: red" size="2">MyAppDomain</font>.CreateInstanceAndUnwrap(</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8220;</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">程序集名称</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">,</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">名命空间<span lang="EN-US">.</span>类名</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">C1.FF();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">或<span lang="EN-US"> <o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">AppDomain MyAppDomain=AppDomain.CreatDomain(</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8220;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">MyNewAD</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">IObjectHandle handle=<font style="color: red" size="2">MyAppDomain</font>.CreateInstance </span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8220;</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">程序集名称</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">,</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">名命空间<span lang="EN-US">.</span>类名</span><span lang="EN-US" style="font-size: 9pt; font-family: 'Times New Roman','serif'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 新宋体; mso-fareast-font-family: 新宋体">&#8221;</span><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">Class1 C1=(Class1)handle.Unwrap();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">C1.FF();<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span style="font-size: 9pt; font-family: 新宋体; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes">后都的好处在于用<span lang="EN-US">C1</span>这个对象的时候才进处理。<span lang="EN-US"><o:p></o:p></span></span></p>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1246980.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42953/" target="_blank">[新闻]13个大文件邮件传送服务</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Asp.net用户管理API的应用（下）</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/07/19/1246797.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Sat, 19 Jul 2008 13:18:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/07/19/1246797.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1246797.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/07/19/1246797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1246797.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1246797.html</trackback:ping><description><![CDATA[摘要: 4、注销用户Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1FormsAuthentication.SignOut();//注销用户2Roles.DeleteCookie();//清除cookie3FormsAuthentication.Redire&nbsp;&nbsp;<a href='http://www.cnblogs.com/axzxs2001/archive/2008/07/19/1246797.html'>阅读全文</a><img src ="http://www.cnblogs.com/axzxs2001/aggbug/1246797.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42952/" target="_blank">[新闻]微型博客Twitter取消IM服务 称其ROI差</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Asp.net用户管理API的应用（上）</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246422.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Fri, 18 Jul 2008 15:02:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246422.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1246422.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1246422.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1246422.html</trackback:ping><description><![CDATA[摘要: Asp.net官方标准控件实现用户的管理，虽然简单，但控件封装性很强，开发人员不能明白做了什么样的调用，还用别一方面，标准控件的使用，很大程度上限制了程序的可变性。如果自开发一整套用户管理系统，可行，但又失去了标准用户控件的作用，于是用API来管理用户，成为一个很好的先择，下面我列出主要（不　全部）的用户管理API实例：１、注册用户用Membership.CreateUser来创建设新用户，注意密&nbsp;&nbsp;<a href='http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246422.html'>阅读全文</a><img src ="http://www.cnblogs.com/axzxs2001/aggbug/1246422.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42951/" target="_blank">[新闻]用手机聊Gtalk的方法以及应用总结</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Asp.net的用户管理</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246346.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Fri, 18 Jul 2008 13:05:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246346.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1246346.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/07/18/1246346.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1246346.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1246346.html</trackback:ping><description><![CDATA[<blockquote dir="ltr" style="margin-right: 0px">
<p>&nbsp;<span style="font-size: 9pt; font-family: 新宋体">在大多数系统中，开发人员都是自己建立用户管理系统<br />
</span><span style="font-size: 9pt; font-family: 新宋体">在asp.net中，微软给了一套用户验证，权限，角色的控件和API，接下来的几往篇文单谈一下自己的浅薄认识。<br />
</span><span style="font-size: 9pt; font-family: 新宋体">引入数据库<br />
</span><span style="font-size: 9pt; font-family: 新宋体">把用户管理的数据库引入到自己的项目中，在装完Freamework2.0后，有如下文件，</span><span style="font-size: 9pt; font-family: 新宋体">C:"Windows"Microsoft.NET"Framework"v2.0.50727"aspnet_regsql.exe</span><span style="font-size: 9pt; font-family: 新宋体">（这是默认的安装目录）,这个文件是用来向用户的数据库添加用户管理的数据库表的。安装界面如下：</span></p>
<p style="text-align: center" align="center"><span style="font-size: 9pt; font-family: 新宋体"><img height="420" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/image3.jpeg" width="589" border="0" /><br />
（一）<br />
</span><span style="font-size: 9pt; font-family: 新宋体"><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/image4.jpeg" border="0" /><br />
（二）<br />
</span><span style="font-size: 9pt; font-family: 新宋体"><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/image5.jpeg" border="0" /><br />
（三）<br />
</span><span style="font-size: 9pt; font-family: 新宋体"><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/image6.jpeg" border="0" /><br />
（四）<br />
</span><span style="font-size: 9pt; font-family: 新宋体"><img height="420" alt="" src="http://www.cnblogs.com/images/cnblogs_com/axzxs2001/image7.jpeg" width="589" border="0" /><br />
（五）</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; font-family: 新宋体">其中的第三步，用户可以选择自己的数据库把用户管理的数据表加载到自己的数据库中。</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; font-family: 新宋体">此时如果用用户登录控件做用户的操作时，用户的信息还是添加不到自己的数据中的，因为系统默认的用户数据库是一个位于本项目App_Data文件夹下的一个文件性SQL数据库，为了登录控件中用户管理的一些类能操作自己的数据库中的用户管理表，则需在配置文件作一下配置的修改，即在web.config中作修改。<br />
</span><span style="font-size: 9pt; font-family: 新宋体">修改如下：<br />
</span><span style="font-size: 9pt; font-family: 新宋体">在web.config的&lt;system.web&gt;中添加下列代码<br />
</span><span style="font-size: 9pt; font-family: 新宋体"></p>
<div class="cnblogs_code"><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">添加成员管理</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">membership&nbsp;defaultProvider</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">SqlProvider</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;userIsOnlineTimeWindow</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">20</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">providers</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">add&nbsp;connectionStringName</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">ConString</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;enablePasswordRetrieval</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">false</span><span style="color: #800000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enablePasswordReset</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;requiresQuestionAndAnswer</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passwordFormat</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">Hashed</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;applicationName</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">/</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">SqlProvider</span><span style="color: #800000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">System.Web.Security.SqlMembershipProvider</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">providers</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">membership</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">添加角色管理</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">roleManager&nbsp;defaultProvider</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">SqlProvider</span><span style="color: #800000">"</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enabled</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;cacheRolesInCookie</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookieName</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">.ASPROLES</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookieTimeout</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">30</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookiePath</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">/</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookieRequireSSL</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookieSlidingExpiration</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;cookieProtection</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">All</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">providers</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">add&nbsp;name</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">SqlProvider</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;type</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">System.Web.Security.SqlRoleProvider</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionStringName</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">ConString</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;applicationName</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">SampleApplication</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">providers</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">roleManager</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&lt;!--</span><span style="color: #000000">配置连接字符串</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">connectionStrings</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">add&nbsp;name</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">ConString</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;connectionString</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">Data&nbsp;Source=.;Initial&nbsp;Catalog=UserManage;Integrated&nbsp;Security=True</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;providerName</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">System.Data.SqlClient</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">connectionStrings</span><span style="color: #000000">&gt;</span></div>
<p style="text-align: left" align="left">本配置的意思是重新建立一个连接字符串，把用户管理和角色管理都指向这个连接字符串，也就是系统中有关用户角色类操作数据库时都依赖这个连接来完成。<br />
</span><span style="font-size: 9pt; font-family: 新宋体">成员管理和角色管理的配置中都有一个&lt;providers&gt;的标签，该标签的主要作用是配置成员类和角色类的一些属性，比如成员配置中</span><span style="font-size: 9pt; font-family: 新宋体">&lt;add connectionStringName="ConString" enablePasswordRetrieval="false"<br />
</span><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enablePasswordReset="true" requiresQuestionAndAnswer="true"<br />
</span><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passwordFormat="Hashed" applicationName="/" name="SqlProvider"<br />
</span><span style="font-size: 9pt; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="System.Web.Security.SqlMembershipProvider" /&gt;<br />
</span><span style="font-size: 9pt; font-family: 新宋体">首先是个连接，指向ConString，密码回复功能，密码重设功能，是否要问题回答，密码的格式，应用程序的路径，本Provider的名称，以及本Provider的类型。<br />
</span><span style="font-size: 9pt; font-family: 新宋体">至此，我们就完成了把微软的用户管理的表导入自己的数据库，并且作了连接字符串的配置，如果我们现在操作成员类或角色类，成员和角色的变动就会在自己的数据表中得到体现。</span></p>
</blockquote>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1246346.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42951/" target="_blank">[新闻]用手机聊Gtalk的方法以及应用总结</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>俱乐部又多了一个MVP</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/07/02/1233714.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Wed, 02 Jul 2008 01:22:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/07/02/1233714.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1233714.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/07/02/1233714.html#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1233714.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1233714.html</trackback:ping><description><![CDATA[山西DotNet俱乐部的周金桥同志成为2008年7月份的MVP，在这里祝贺一下。 
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1233714.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42950/" target="_blank">[新闻]Google开拓美政府机构市场 微软业务受冲击</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>我的WebCast</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/07/01/1233245.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Tue, 01 Jul 2008 07:33:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/07/01/1233245.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1233245.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/07/01/1233245.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1233245.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/axzxs2001/services/trackbacks/1233245.html</trackback:ping><description><![CDATA[九月份要在TechNet上讲关于职业规划的WebCast，请大家提提宝贵意见！<br />
初次讲webcast ，希望大家多提意见。<br />
<br />
<font face="Verdana"><a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032381339&amp;EventCategory=2&amp;culture=zh-CN&amp;CountryCode=CN">http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032381339&amp;EventCategory=2&amp;culture=zh-CN&amp;CountryCode=CN</a></font>
<img src ="http://www.cnblogs.com/axzxs2001/aggbug/1233245.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42949/" target="_blank">[新闻]消息称苹果正在开发iTunes网络电视</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>要加入windows live的朋友请到这里</title><link>http://www.cnblogs.com/axzxs2001/archive/2008/06/29/1232035.html</link><dc:creator>桂素伟</dc:creator><author>桂素伟</author><pubDate>Sun, 29 Jun 2008 08:26:00 GMT</pubDate><guid>http://www.cnblogs.com/axzxs2001/archive/2008/06/29/1232035.html</guid><wfw:comment>http://www.cnblogs.com/axzxs2001/comments/1232035.html</wfw:comment><comments>http://www.cnblogs.com/axzxs2001/archive/2008/06/29/1232035.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/axzxs2001/comments/commentRss/1232035.html</w