<?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"
	>

<channel>
	<title>北风技术专栏 &#187; xingkong</title>
	<atom:link href="http://column.ibeifeng.com/wp-feed.php?author_name=xingkong&#038;feed=feed" rel="self" type="application/rss+xml" />
	<link>http://column.ibeifeng.com</link>
	<description>用技术点亮生活中每个亮点</description>
	<pubDate>Sun, 25 Jul 2010 12:28:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>类(class) PK 结构(struct)</title>
		<link>http://column.ibeifeng.com/xingkong/20081121232.shtml</link>
		<comments>http://column.ibeifeng.com/xingkong/20081121232.shtml#comments</comments>
		<pubDate>Fri, 21 Nov 2008 03:47:51 +0000</pubDate>
		<dc:creator>xingkong</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<guid isPermaLink="false">http://column.ibeifeng.com/?p=232</guid>
		<description><![CDATA[在C#中，结构与类的初始化都可以用new关键字。
然后他们的却有巨大的区别。以下举例说明之间的区别和用处：
1、声明不同
类的声明关键字：class
结构的声明关键字:struct

2、类型不同
类是引用类型，new出来的对象分配在堆中，堆的大小由类中定义的字段之和,可扩充
结构是值类型，new出来的对象是分配在堆栈中，堆栈的大小是有限制的。
3、面向对象特性
类可继承，结构却不能继承，因此类可以得到很好的扩展。
所以在结构中不能使用protected,abstract,sealed,且结构没有默认的构造函数，但可以添加
接着谈谈它们之间用在哪写地方：
看到上面它们之间的区别，下面讨论到底是使用类还是结构。
1、通过上面第2点区别，因此得到结构大小受限制(因为在堆栈中)，所以适合创建小型的逻辑对象
2、类的大小是通过字段的大小总和动态分配，因此适合创建大新的逻辑对象。
3、如果只保存小型的纯数据应该用结构来定义。
最后我们来看他们的使用示例

1、声明一个类
class classname
{
int i=0;
}
2、声明一个结构
struct structname
{
int i=0;
}
使用：
classname cn=new classname();
structname sn=new structname();

]]></description>
			<content:encoded><![CDATA[<p>在C#中，结构与类的初始化都可以用new关键字。<br />
然后他们的却有巨大的区别。以下举例说明之间的区别和用处：<br />
1、声明不同<br />
类的声明关键字：class<br />
结构的声明关键字:struct</p>
<p><span id="more-232"></span></p>
<p>2、类型不同<br />
类是引用类型，new出来的对象分配在堆中，堆的大小由类中定义的字段之和,可扩充<br />
结构是值类型，new出来的对象是分配在堆栈中，堆栈的大小是有限制的。<br />
3、面向对象特性<br />
类可继承，结构却不能继承，因此类可以得到很好的扩展。<br />
所以在结构中不能使用protected,abstract,sealed,且结构没有默认的构造函数，但可以添加</p>
<p>接着谈谈它们之间用在哪写地方：<br />
看到上面它们之间的区别，下面讨论到底是使用类还是结构。<br />
1、通过上面第2点区别，因此得到结构大小受限制(因为在堆栈中)，所以适合创建小型的逻辑对象<br />
2、类的大小是通过字段的大小总和动态分配，因此适合创建大新的逻辑对象。<br />
3、如果只保存小型的纯数据应该用结构来定义。</p>
<p>最后我们来看他们的使用示例</p>
<div class="codeArea csharp">
<div style="#000000;"><span style="#000000;">1</span>、声明一个类<br />
<span style="#0000ff;">class</span> <span style="#000000;">classname</span><br />
<span style="#000000;">{</span><br />
<span style="#0000ff;">int</span> <span style="#000000;">i</span><span style="#000000;">=</span><span style="#000000;">0</span><span style="#000000;">;</span><br />
<span style="#000000;">}</span><br />
<span style="#000000;">2</span>、声明一个结构<br />
<span style="#0000ff;">struct</span> <span style="#000000;">structname</span><br />
<span style="#000000;">{</span><br />
<span style="#0000ff;">int</span> <span style="#000000;">i</span><span style="#000000;">=</span><span style="#000000;">0</span><span style="#000000;">;</span><br />
<span style="#000000;">}</span><br />
使用：<br />
<span style="#000000;">classname</span> <span style="#000000;">cn</span><span style="#000000;">=</span><span style="#0000ff;">new</span> <span style="#000000;">classname</span><span style="#000000;">();</span><br />
<span style="#000000;">structname</span> <span style="#000000;">sn</span><span style="#000000;">=</span><span style="#0000ff;">new</span> <span style="#000000;">structname</span><span style="#000000;">();</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://column.ibeifeng.com/xingkong/20081121232.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Hashtable简介和使用</title>
		<link>http://column.ibeifeng.com/xingkong/2008092340.shtml</link>
		<comments>http://column.ibeifeng.com/xingkong/2008092340.shtml#comments</comments>
		<pubDate>Tue, 23 Sep 2008 07:40:15 +0000</pubDate>
		<dc:creator>xingkong</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Hashtable]]></category>

		<guid isPermaLink="false">http://column.ibeifeng.com/?p=40</guid>
		<description><![CDATA[一、简介
1、Hashtable(哈希表)在.NET Framework中，Hashtable是System.Collections命名空间提供的一个容器，用于处理和表现类似key/value的键值对，其中key通常可用来快速查找，同时key是区分大小写；value用于存储对应于key的值。Hashtable中key/value键值对均为object类型，所以Hashtable可以支持任何类型的key/value键值对。
2、Hashtable优点：查找速度快，像上面提到的通过KEY快速查找，因为通过KEY会计算一个唯一的地址（KEY不相同的情况下），而那个地址就存放了VALUE。
Hashtable缺点：对数据量大的时候内存占用大。]]></description>
			<content:encoded><![CDATA[<p>一、简介<br />
1、Hashtable(哈希表)在.NET Framework中，Hashtable是System.Collections命名空间提供的一个容器，用于处理和表现类似key/value的键值对，其中key通常可用来快速查找，同时key是区分大小写；value用于存储对应于key的值。Hashtable中key/value键值对均为object类型，所以Hashtable可以支持任何类型的key/value键值对。<br />
2、Hashtable优点：查找速度快，像上面提到的通过KEY快速查找，因为通过KEY会计算一个唯一的地址（KEY不相同的情况下），而那个地址就存放了VALUE。<br />
Hashtable缺点：对数据量大的时候内存占用大。</p>
<p><span id="more-40"></span></p>
<p>二、使用<br />
1、要想使用Hashtable，就需要加入命名空间System.Collections。[using System.Collections]<br />
2、实例化一个Hashtable对象[Hashtable ht=new Hashtable()]<br />
3、可以使用实例化后Hashtable对象如上面的 ht进行添加、删除、查找、排序、遍历。（具体操作请看下面的操作代码）。<br />
三、操作代码（都使用上面已实例化的对象ht）<br />
1、添加元素<br />
<code>ht.Add(key,value) //key、value是任意类型的数据。 </code></p>
<p>2、删除某个元素和所有元素<br />
<code>ht.Remove(key),ht.Clear() </code><br />
3、查找元素<br />
<code>ht.Contains(key) </code><br />
4、遍历KEY<br />
<code>foreach(Object key in ht.Keys)<br />
{<br />
Console.WriteLine(key.Tostring());<br />
} </code></p>
<p>5、遍历VALUE<br />
<code>foreach(Object value in ht.Values)<br />
{<br />
Console.WriteLine(value.Tostring());<br />
} </code></p>
<p>6、同时遍历KEY,VALUE<br />
<code>foreach(DictionaryEntry de in ht)<br />
{<br />
Console.WriteLine(de.Key)<br />
Console.WriteLine(de.Value)<br />
} </code><br />
7、排序<br />
我们这里要用到ArrayList集合类，以存放ht所有的KEYS或VALUES<br />
<code>//对KEYS排序<br />
ArrayList akeys = new ArrayList(ht.Keys);<br />
akeys.Sort();<br />
//对VALUES排序<br />
ArrayList akeys = new ArrayList(ht.values);<br />
akeys.Sort(); </code><br />
结束语：Hashtable在查找数据时用处很大，因为速度很快，但用牺牲内存消耗作代价。QQ在查找在线用户的时候就适当的用了Hashtable。大家可以根据场合适当使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://column.ibeifeng.com/xingkong/2008092340.shtml/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
