﻿<?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>C++博客-忘掉不可能得到的，丢掉已得到但没用的，留下问题与机遇！</title><link>http://www.cppblog.com/standers/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 11:26:07 GMT</lastBuildDate><pubDate>Wed, 08 Apr 2026 11:26:07 GMT</pubDate><ttl>60</ttl><item><title>C++/CLI与C#中的装箱、拆箱比较</title><link>http://www.cppblog.com/standers/archive/2006/07/10/9657.html</link><dc:creator>Standers</dc:creator><author>Standers</author><pubDate>Mon, 10 Jul 2006 12:05:00 GMT</pubDate><guid>http://www.cppblog.com/standers/archive/2006/07/10/9657.html</guid><wfw:comment>http://www.cppblog.com/standers/comments/9657.html</wfw:comment><comments>http://www.cppblog.com/standers/archive/2006/07/10/9657.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/standers/comments/commentRss/9657.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/standers/services/trackbacks/9657.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">C++/CLI与C#中的装箱、拆箱的最大区别在于C++/CLI装箱后能得到强类型的对象，而C#则只能将值类型装箱为Object或ValueType，以下将先分别介绍两种语言的装箱拆箱操作，最活再进行综合的比较。</font>
				<br />C#的装箱与拆箱<br /></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最简单的装箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">Int<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chmetcnv w:st="on" unitname="a" sourcevalue="32" hasspace="True" negative="False" numbertype="1" tcsc="0">32 a</st1:chmetcnv> = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">Object o = a;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生的</span>
				<span lang="EN-US">IL</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指令如下</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0001:<span style="mso-spacerun: yes">  </span>ldc.i4.s<span style="mso-spacerun: yes">   </span>100<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0003:<span style="mso-spacerun: yes">  </span>stloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0004:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0005:<span style="mso-spacerun: yes">  </span>box<span style="mso-spacerun: yes">        </span>[mscorlib]System.Int32<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 5.25pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: .5">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes"> </span>
				</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-bidi-font-family: Fixedsys">IL_<st1:chmetcnv w:st="on" unitname="a" sourcevalue="0" hasspace="False" negative="False" numbertype="1" tcsc="0">000a</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>stloc.1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-bidi-font-family: Fixedsys">
						<span style="mso-tab-count: 1">   </span>这里的装箱是显式的，有时则会进行隐式的装箱，例如<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-ansi-language: ZH-CN; mso-bidi-font-family: Fixedsys">
						<span style="mso-tab-count: 2">       </span>
				</span>
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">Int<st1:chmetcnv w:st="on" unitname="a" sourcevalue="32" hasspace="True" negative="False" numbertype="1" tcsc="0">32 a</st1:chmetcnv> = 100;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-tab-count: 2">       </span>Console.WriteLine(a.ToString());//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">此不会装箱<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-tab-count: 2">       </span>Console.WriteLine(a.GetType());//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">装箱<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 5.25pt; mso-char-indent-count: .5">
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">生成的<span lang="EN-US">IL</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 lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-tab-count: 1">    </span>
						<span style="mso-spacerun: yes"> </span>
						<span style="mso-spacerun: yes"> </span>IL_0004:<span style="mso-spacerun: yes">  </span>ldloca.s<span style="mso-spacerun: yes">   </span>V_0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0006:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>instance string [mscorlib]System.Int32::ToString()<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_000b:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>void [mscorlib]System.Console::WriteLine(string)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0010:<span style="mso-spacerun: yes">  </span>nop<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0011:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0012:<span style="mso-spacerun: yes">  </span>box<span style="mso-spacerun: yes">        </span>[mscorlib]System.Int32<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0017:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>instance class [mscorlib]System.Type [mscorlib]System.Object::GetType()<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="C" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0">001c</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>void [mscorlib]System.Console::WriteLine(object)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-ALIGN: left; mso-para-margin-left: 1.71gd; mso-layout-grid-align: none" align="left">
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">因为<span lang="EN-US">Int32</span>重写了<span lang="EN-US">ToStrting</span>方法，因此调用该方法时不会装箱，而调用<span lang="EN-US">GetType</span>时则必须调用其基类<span lang="EN-US">Object</span>的方法，因此必须装箱。<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">改变已装箱的对象值</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">先定义一值类型的</span>
				<span lang="EN-US">Point</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">public struct Point</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>public Int32 X;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>public Int32 Y;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再看以下操作</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt">
				<span lang="EN-US">Point pt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>pt.X = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>pt.Y = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>Object o = pt;//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">装箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>Point temp = (Point)o;//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>temp.X = 10;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>temp.Y = 20;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>Console.WriteLine(((Point)o).X.ToString()+"\n"+((Point)o).Y.ToString());//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两次拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>o = temp//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">装箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Console.WriteLine(((Point)o).X.ToString()+"\n"+((Point)o).Y.ToString());//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">两次拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一次输出结果为</span>
				<span lang="EN-US">100 100</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，第二次输出结果为</span>
				<span lang="EN-US">10 20</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">产生的</span>
				<span lang="EN-US">IL</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指令如下</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>……</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10.5pt; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-char-indent-count: 1.0" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">IL_0013:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0014:<span style="mso-spacerun: yes">  </span>box<span style="mso-spacerun: yes">        </span>Point<span style="mso-spacerun: yes">                     </span>//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">第一次装箱<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 lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0019:<span style="mso-spacerun: yes">  </span>stloc.1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="a" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0">001a</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldloc.1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_001b:<span style="mso-spacerun: yes">  </span>unbox.any<span style="mso-spacerun: yes">  </span>Point<span style="mso-spacerun: yes">                    </span>//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">第一次拆箱<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 lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0020:<span style="mso-spacerun: yes">  </span>stloc.2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0021:<span style="mso-spacerun: yes">  </span>ldloca.s<span style="mso-spacerun: yes">   </span>V_2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0023:<span style="mso-spacerun: yes">  </span>ldc.i4.s<span style="mso-spacerun: yes">   </span>10<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0025:<span style="mso-spacerun: yes">  </span>stfld<span style="mso-spacerun: yes">      </span>int32 Point::X<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="a" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0">002a</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldloca.s<span style="mso-spacerun: yes">   </span>V_2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="C" sourcevalue="2" hasspace="False" negative="False" numbertype="1" tcsc="0">002c</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldc.i4.s<span style="mso-spacerun: yes">   </span>20<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_002e:<span style="mso-spacerun: yes">  </span>stfld<span style="mso-spacerun: yes">      </span>int32 Point::Y<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0033:<span style="mso-spacerun: yes">  </span>ldloc.1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0034:<span style="mso-spacerun: yes">  </span>unbox.any<span style="mso-spacerun: yes">  </span>Point<span style="mso-spacerun: yes">                   </span>//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">输出时的拆箱<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 lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0039:<span style="mso-spacerun: yes">  </span>ldfld<span style="mso-spacerun: yes">      </span>int32 Point::X<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_003e:<span style="mso-spacerun: yes">  </span>stloc.3<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="F" sourcevalue="3" hasspace="False" negative="False" numbertype="1" tcsc="0">003f</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldloca.s<span style="mso-spacerun: yes">   </span>V_3<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0041:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>instance string [mscorlib]System.Int32::ToString()<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0046:<span style="mso-spacerun: yes">  </span>ldstr<span style="mso-spacerun: yes">      </span>"\n"<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_004b:<span style="mso-spacerun: yes">  </span>ldloc.1<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="C" sourcevalue="4" hasspace="False" negative="False" numbertype="1" tcsc="0">004c</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>unbox.any<span style="mso-spacerun: yes">  </span>Point<span style="mso-spacerun: yes">                   </span>//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">输出时的拆箱<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 lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0051:<span style="mso-spacerun: yes">  </span>ldfld<span style="mso-spacerun: yes">      </span>int32 Point::Y<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0056:<span style="mso-spacerun: yes">  </span>stloc.3<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0057:<span style="mso-spacerun: yes">  </span>ldloca.s<span style="mso-spacerun: yes">   </span>V_3<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0059:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>instance string [mscorlib]System.Int32::ToString()<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_005e:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>string [mscorlib]System.String::Concat(string,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">                                                              </span>string,<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">                         </span>
						<span style="mso-spacerun: yes">                                     </span>string)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0063:<span style="mso-spacerun: yes">  </span>call<span style="mso-spacerun: yes">       </span>void [mscorlib]System.Console::WriteLine(string)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0068:<span style="mso-spacerun: yes">  </span>nop<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0069:<span style="mso-spacerun: yes">  </span>ldloc.2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="a" sourcevalue="6" hasspace="False" negative="False" numbertype="1" tcsc="0">006a</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>box<span style="mso-spacerun: yes">        </span>Point<span style="mso-spacerun: yes">                   </span>//</span>
				<span style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">第二次装箱<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">  </span>……</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">         </span></span>
						</span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过接口改变已装箱对象的值</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">装箱后，由于对象不具有强类型，无法知道对象内部的结构，对象成员的改变，必须经过先拆箱，改变拆箱对象的值，最后再重新装箱这三步。以下将通过接口实现来改变已装箱对象的值。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">public interface IChange</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>void Change(Int32 x,Int32 y);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">public struct Point : IChange</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>public Int32 X;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>public Int32 Y;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>public void Change(Int32 x,Int32 y)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>this.X = x;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>this.Y = y;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">public class MainClass</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>static void <st1:place w:st="on">Main</st1:place>()</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>Point pt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>pt.X = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>pt.Y = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>Object o = pt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>((IChange)o).Change(50,50);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">            </span>Console.WriteLine(((Point)o).X);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">     </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 27pt; mso-para-margin-left: 2.57gd">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">通过接口改变已装箱的值，虽然减少了拆箱和装箱所带来的性能损失，但是需要值类型实现接口。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再来看看</span>
				<span lang="EN-US">C++/CLI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的装箱与拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Point pt;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>pt.X = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>pt.Y = 100;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Point^ ptrPt = pt;//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">装箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Console::WriteLine(ptrPt-&gt;X.ToString()+"\n"+ptrPt-&gt;Y.ToString());//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这里进行了两次拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>ptrPt-&gt;X = 90//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>ptrPt-&gt;Y = 50;//</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">拆箱</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>Console::WriteLine(ptrPt-&gt;X.ToString()+"\n"+ptrPt-&gt;Y.ToString());</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虽然</span>
				<span lang="EN-US">C++/CLI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象具有强类型，但事实上，对已装箱的对象还是必须经过拆箱。只不过对</span>
				<span lang="EN-US">C++/CLI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序员来说，看到的只是对对象成员的一次赋值，实际的操作都由编译器自动生成</span>
				<span lang="EN-US">IL</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指令来完成。就上述改变坐标操作操作而言，产生的代码如下：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10.5pt; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-char-indent-count: 1.0" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">IL_<st1:chmetcnv w:st="on" unitname="F" sourcevalue="5" hasspace="False" negative="False" numbertype="1" tcsc="0">005f</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0060:<span style="mso-spacerun: yes">  </span>unbox<span style="mso-spacerun: yes">      </span>Point<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0065:<span style="mso-spacerun: yes">  </span>ldc.i4.s<span style="mso-spacerun: yes">   </span>90<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0067:<span style="mso-spacerun: yes">  </span>stfld<span style="mso-spacerun: yes">      </span>int32 Point::X<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="C" sourcevalue="6" hasspace="False" negative="False" numbertype="1" tcsc="0">006c</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_006d:<span style="mso-spacerun: yes">  </span>unbox<span style="mso-spacerun: yes">      </span>Point<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0072:<span style="mso-spacerun: yes">  </span>ldc.i4.s<span style="mso-spacerun: yes">   </span>50<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0074:<span style="mso-spacerun: yes">  </span>stfld<span style="mso-spacerun: yes">      </span>int32 Point::Y<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0079:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="a" sourcevalue="7" hasspace="False" negative="False" numbertype="1" tcsc="0">007a</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>unbox<span style="mso-spacerun: yes">      </span>Point<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_<st1:chmetcnv w:st="on" unitname="F" sourcevalue="7" hasspace="False" negative="False" numbertype="1" tcsc="0">007f</st1:chmetcnv>:<span style="mso-spacerun: yes">  </span>ldfld<span style="mso-spacerun: yes">      </span>int32 Point::Y<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0084:<span style="mso-spacerun: yes">  </span>stloc.3<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0085:<span style="mso-spacerun: yes">  </span>ldloc.0<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0086:<span style="mso-spacerun: yes">  </span>unbox<span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span>Point<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_008b:<span style="mso-spacerun: yes">  </span>ldfld<span style="mso-spacerun: yes">      </span>int32 Point::X<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-FAMILY: Fixedsys; mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt; mso-bidi-font-family: Fixedsys">
						<span style="mso-spacerun: yes">  </span>IL_0090:<span style="mso-spacerun: yes">  </span>stloc.2<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">疑问：</span>
				<span lang="EN-US" style="COLOR: red">C++/CLI</span>
				<span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的装箱是真正的强类型么？也就是说真正了解了对象的内部构造么？如果是为何对对象的改变必须经过拆箱操作？</span>
				<span lang="EN-US" style="COLOR: red">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以上</span>
				<span lang="EN-US" style="COLOR: red">IL</span>
				<span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指令为何只有拆箱而没有相对应的封箱操作呢？</span>
				<span lang="EN-US" style="COLOR: red">
						<o:p>
						</o:p>
				</span>
		</p>
		<p>结论：虽然C++/CLI的装箱可以得到强类型的对象，但改变该对象还是要经过拆箱处理。</p>
<img src ="http://www.cppblog.com/standers/aggbug/9657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/standers/" target="_blank">Standers</a> 2006-07-10 20:05 <a href="http://www.cppblog.com/standers/archive/2006/07/10/9657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>