<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘少宁的博客 &#187; 装箱</title>
	<atom:link href="http://www.gosoa.com.cn/tag/%e8%a3%85%e7%ae%b1/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gosoa.com.cn</link>
	<description>专注于高性能LAMP架构分析与实践</description>
	<lastBuildDate>Mon, 30 Apr 2012 09:24:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>C#高级（七）类型强制转换,拆箱,装箱</title>
		<link>http://www.gosoa.com.cn/c%e9%ab%98%e7%ba%a7%ef%bc%88%e4%b8%83%ef%bc%89%e7%b1%bb%e5%9e%8b%e5%bc%ba%e5%88%b6%e8%bd%ac%e6%8d%a2%e6%8b%86%e7%ae%b1%e8%a3%85%e7%ae%b1</link>
		<comments>http://www.gosoa.com.cn/c%e9%ab%98%e7%ba%a7%ef%bc%88%e4%b8%83%ef%bc%89%e7%b1%bb%e5%9e%8b%e5%bc%ba%e5%88%b6%e8%bd%ac%e6%8d%a2%e6%8b%86%e7%ae%b1%e8%a3%85%e7%ae%b1#comments</comments>
		<pubDate>Wed, 17 Dec 2008 10:48:28 +0000</pubDate>
		<dc:creator>scofield</dc:creator>
				<category><![CDATA[.NET/C开发]]></category>
		<category><![CDATA[拆箱]]></category>
		<category><![CDATA[类型强制转换]]></category>
		<category><![CDATA[装箱]]></category>

		<guid isPermaLink="false">http://www.gosoa.com.cn/?p=170</guid>
		<description><![CDATA[一、装箱和拆箱 装箱就是 将值类型转换为引用类型。拆箱就是 将引用类型转换为值类型。 比如我们非常常用的 .ToString() 方法，就是典型的一个装箱的过程。 再如下面的例子 int i=10; object y=(object) i ; //这就是装箱 int x=(int)y;&#160; //这是拆箱。 &#160; 二、对象的相等比较 &#160;&#160;&#160;&#160;&#160;&#160; 在C#中，有四种比较相等的方法。 1、&#160; ReferenceEquals() 该方法是一个静态方法，用来判断两个引用是否指向同一个实例。也就是是否指向同一个内存地址，如果是，则返回true ，否则返回 false。 2、&#160; 虚拟的 Equals() 方法。因为是虚拟的方法，所以可以重写。这样它既可以用来比较对象，也可以比较值。 3、&#160; 静态的 Equals() 方法，这与虚拟的Equals()方法作用相同，只是带有两个参数，并对其进行比较。这个方法可以处理两个对象中有一个是null的情况，当有一个是null的时候，就会抛出异常。 4、比较运算符 ＝＝ 我们最好把这种比较看做是严格值比较和严格引用比较之间的中间选项。但注意，通过这样的方式比较字符串的时候，而不是引用。 &#160;&#160;&#160;&#160;&#160;]]></description>
			<content:encoded><![CDATA[<p style="TEXT-INDENT: -21pt; MARGIN: 0cm 0cm 0pt 21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt" class=MsoNormal><span style="mso-bidi-font-family: 宋体" lang=EN-US><span style="mso-list: Ignore"><span style="FONT-FAMILY: Times New Roman">一、</span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">装箱和拆箱</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">装箱就是</span><span style="FONT-FAMILY: Times New Roman"> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将值类型转换为引用类型。拆箱就是</span><span style="FONT-FAMILY: Times New Roman"> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将引用类型转换为值类型。</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">比如我们非常常用的</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman"> .ToString() </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，就是典型的一个装箱的过程。</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">再如下面的例子</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">int i=10;</span></span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">object y=(object) i ; //</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这就是装箱</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">int x=(int)y;<span style="mso-spacerun: yes">&nbsp; </span>//</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">这是拆箱。</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span lang=EN-US><?XML:NAMESPACE PREFIX = O /><o:P><span style="FONT-FAMILY: Times New Roman">&nbsp;</span></o:P></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">二、对象的相等比较</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span lang=EN-US><span style="mso-tab-count: 1"><span style="FONT-FAMILY: Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">C#</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，有四种比较相等的方法。</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-list: l1 level1 lfo2; tab-stops: list 39.0pt" class=MsoNormal><span style="FONT-FAMILY: Times New Roman"><span style="mso-fareast-font-family: 'Times New Roman'" lang=EN-US><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span lang=EN-US>ReferenceEquals() </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该方法是一个静态方法，用来判断两个引用是否指向同一个实例。也就是是否指向同一个内存地址，如果是，则返回</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">true </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，否则返回</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman"> false</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-list: l1 level1 lfo2; tab-stops: list 39.0pt" class=MsoNormal><span style="mso-fareast-font-family: 'Times New Roman'" lang=EN-US><span style="mso-list: Ignore"><span style="FONT-FAMILY: Times New Roman">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟的</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman"> Equals() </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法。因为是虚拟的方法，所以可以重写。这样它既可以用来比较对象，也可以比较值。</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-list: l1 level1 lfo2; tab-stops: list 39.0pt" class=MsoNormal><span style="mso-fareast-font-family: 'Times New Roman'" lang=EN-US><span style="mso-list: Ignore"><span style="FONT-FAMILY: Times New Roman">3、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">静态的</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman"> Equals() </span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，这与虚拟的</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">Equals()</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法作用相同，只是带有两个参数，并对其进行比较。这个方法可以处理两个对象中有一个是</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">null</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的情况，当有一个是</span><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">null</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的时候，就会抛出异常。</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt" class=MsoNormal><span lang=EN-US><span style="FONT-FAMILY: Times New Roman">4</span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、比较运算符</span><span style="FONT-FAMILY: Times New Roman"> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">＝＝</span><span style="FONT-FAMILY: Times New Roman"> </span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们最好把这种比较看做是严格值比较和严格引用比较之间的中间选项。但注意，通过这样的方式比较字符串的时候，而不是引用。</span></p>
<p><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-fareast-font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang=EN-US><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gosoa.com.cn/c%e9%ab%98%e7%ba%a7%ef%bc%88%e4%b8%83%ef%bc%89%e7%b1%bb%e5%9e%8b%e5%bc%ba%e5%88%b6%e8%bd%ac%e6%8d%a2%e6%8b%86%e7%ae%b1%e8%a3%85%e7%ae%b1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

