<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_华志昊</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/15269/rss</id><updated>2012-02-07T02:36:03Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/15269/rss"/><entry><id>http://www.cnblogs.com/huazhihao/archive/2012/01/10/XPath_Subquery.html</id><title type="text">XPath Subquery</title><summary type="text">XmlDocumentdoc=newXmlDocument();doc.LoadXml(@&amp;quot;&amp;lt;?xmlversion=&amp;#39;1.0&amp;#39;encoding=&amp;#39;utf-8&amp;#39;?&amp;gt;&amp;lt;root&amp;gt;&amp;lt;foo&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div&amp;gt;a&amp;lt;div&amp;gt;abc&amp;lt;/div&amp;gt;b&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;tdclass=&amp;#39;abc&amp;#39;&amp;gt;</summary><published>2012-01-10T09:05:00Z</published><updated>2012-01-10T09:05:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2012/01/10/XPath_Subquery.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2012/01/10/XPath_Subquery.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; XmlDocument&amp;nbsp;doc&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;XmlDocument();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.LoadXml(&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;?xml&amp;nbsp;version='1.0'&amp;nbsp;encoding='utf-8'&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;root&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;foo&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;table&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;abc&amp;lt;/div&amp;gt;b&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;nbsp;class='abc'&amp;gt;b&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;a&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/foo&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/root&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlNodeList&amp;nbsp;nodes&amp;nbsp;=&amp;nbsp;doc.SelectNodes(&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;//table/tr[*[contains(string(),'abc')]]&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;span style="color: #008000;"&gt;//&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;nodes.Count;&amp;nbsp;i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement&amp;nbsp;ele&amp;nbsp;=&amp;nbsp;nodes[i]&amp;nbsp;&lt;span style="color: #0000FF;"&gt;as&lt;/span&gt;&amp;nbsp;XmlElement;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(nodes.Count);&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2318314.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2012/01/10/XPath_Subquery.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_inherency_and_patterns.html</id><title type="text">PowerCollections学习笔记(2):继承和模式</title><summary type="text">继承 Abstract CollectionBase&amp;lt;T&amp;gt; Implement Bag&amp;lt;T&amp;gt; OrderedBag&amp;lt;T&amp;gt; OrderedSet&amp;lt;T&amp;gt; Feature duplicated ordered ordered &amp;amp; non-duplicated Abstract ListBase&amp;lt;T&amp;gt; Implement Deque&amp;lt;T&amp;gt; ...</summary><published>2011-10-20T03:26:00Z</published><updated>2011-10-20T03:26:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_inherency_and_patterns.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_inherency_and_patterns.html"/><content type="html">&lt;p&gt;&lt;strong&gt;继承&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="667" style="width:500.25pt;margin-left:-1.15pt;border-collapse:collapse;"&gt;  &lt;tbody&gt;&lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Abstract&lt;/p&gt;   &lt;/td&gt;   &lt;td width="585" nowrap="" colspan="3" valign="bottom" style="width:438.45pt;   border:solid windowtext 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;CollectionBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Implement&lt;/p&gt;   &lt;/td&gt;   &lt;td width="147" nowrap="" valign="bottom" style="width:109.95pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Bag&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="162" nowrap="" valign="bottom" style="width:121.5pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedBag&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="276" nowrap="" valign="bottom" style="width:207.0pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedSet&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Feature&lt;/p&gt;   &lt;/td&gt;   &lt;td width="147" nowrap="" valign="bottom" style="width:109.95pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;duplicated&lt;/p&gt;   &lt;/td&gt;   &lt;td width="162" nowrap="" valign="bottom" style="width:121.5pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ordered&lt;/p&gt;   &lt;/td&gt;   &lt;td width="276" nowrap="" valign="bottom" style="width:207.0pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ordered &amp;amp; non-duplicated&lt;/p&gt;   &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="display: inline-block; "&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="673" style="width:504.75pt;margin-left:-1.15pt;border-collapse:collapse;"&gt;  &lt;tbody&gt;&lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Abstract&lt;/p&gt;   &lt;/td&gt;   &lt;td width="591" nowrap="" colspan="2" valign="bottom" style="width:442.95pt;   border:solid windowtext 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;ListBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Implement&lt;/p&gt;   &lt;/td&gt;   &lt;td width="357" nowrap="" valign="bottom" style="width:267.45pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Deque&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="234" nowrap="" valign="bottom" style="width:175.5pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;BigList&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Feature&lt;/p&gt;   &lt;/td&gt;   &lt;td width="357" nowrap="" valign="bottom" style="width:267.45pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;optimized for&amp;nbsp; inserting   at beginning&lt;/p&gt;   &lt;/td&gt;   &lt;td width="234" nowrap="" valign="bottom" style="width:175.5pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;optimized for &amp;gt;100&lt;/p&gt;   &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;span  style="font-size: 14px; font-weight: normal; line-height: 21px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="517" style="width:387.75pt;margin-left:-1.15pt;border-collapse:collapse;"&gt;  &lt;tbody&gt;&lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Abstract&lt;/p&gt;   &lt;/td&gt;   &lt;td width="435" nowrap="" valign="bottom" style="width:325.95pt;border:solid windowtext 1.0pt;   border-left:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;DictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Implement&lt;/p&gt;   &lt;/td&gt;   &lt;td width="435" nowrap="" valign="bottom" style="width:325.95pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Feature&lt;/p&gt;   &lt;/td&gt;   &lt;td width="435" nowrap="" valign="bottom" style="width:325.95pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ordered&lt;/p&gt;   &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="517" style="width:387.75pt;margin-left:-1.15pt;border-collapse:collapse;"&gt;  &lt;tbody&gt;&lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Abstract&lt;/p&gt;   &lt;/td&gt;   &lt;td width="435" nowrap="" valign="bottom" style="width:325.95pt;border:solid windowtext 1.0pt;   border-left:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;MultiDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Implement&lt;/p&gt;   &lt;/td&gt;   &lt;td width="435" nowrap="" valign="bottom" style="width:325.95pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;MultiDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="82" nowrap="" valign="bottom" style="width:61.8pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Feature&lt;/p&gt;   &lt;/td&gt;   &lt;td width="435" nowrap="" valign="bottom" style="width:325.95pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;multiple values associated with one key&lt;/p&gt;   &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;模式&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="859" style="width:644.0pt;margin-left:4.65pt;border-collapse:collapse;"&gt;  &lt;tbody&gt;&lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Pair&amp;lt;TFirst,&amp;nbsp;TSecond&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="125" nowrap="" rowspan="2" style="width:93.45pt;border-top:solid windowtext 1.0pt;   border-left:none;border-bottom:solid black 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;as Type of&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border:solid windowtext 1.0pt;   border-left:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;CollectionBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;Triple&amp;lt;TFirst, TSecond, TThird&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;DictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;&lt;/td&gt;   &lt;td width="125" nowrap="" valign="bottom" style="width:93.45pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;&lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;CollectionBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="125" nowrap="" rowspan="4" style="width:93.45pt;border-top:solid windowtext 1.0pt;   border-left:none;border-bottom:solid black 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;readonly&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border:solid windowtext 1.0pt;   border-left:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ReadOnlyCollectionBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ListBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ReadOnlyListBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;DictionaryBase&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ReadOnlyDictionaryBase&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;MultiDictionaryBase&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;ReadOnlyMultiDictionaryBase&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;&lt;/td&gt;   &lt;td width="125" nowrap="" valign="bottom" style="width:93.45pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;&lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedSet&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="125" nowrap="" rowspan="4" style="width:93.45pt;border-top:solid windowtext 1.0pt;   border-left:none;border-bottom:solid black 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;   height:15.0pt"&gt;   &lt;p align="center" style="margin-bottom: 0.0001pt; text-align: center; "&gt;subclass&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border:solid windowtext 1.0pt;   border-left:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedSet&amp;lt;T&amp;gt;.View : CollectionBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedBag&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedBag&amp;lt;T&amp;gt;.View : CollectionBase&amp;lt;T&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedDictionary&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedDictionary&amp;lt;TKey, TValue&amp;gt;.View :   DictionaryBase&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height:15.0pt"&gt;   &lt;td width="259" nowrap="" valign="bottom" style="width:194.0pt;border:solid windowtext 1.0pt;   border-top:none;padding:   0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedMultiDictionary&amp;lt;TKey, TValue&amp;gt; &lt;/p&gt;   &lt;/td&gt;   &lt;td width="475" nowrap="" valign="bottom" style="width:356.55pt;border-top:none;   border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;   padding:0in 5.4pt 0in 5.4pt;height:15.0pt"&gt;   &lt;p style="margin-bottom: 0.0001pt; "&gt;OrderedMultiDictionary&amp;lt;TKey, TValue&amp;gt;.View :   MultiDictionaryBase&amp;lt;TKey, TValue&amp;gt;&lt;/p&gt;   &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2218728.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_inherency_and_patterns.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_class_definition.html</id><title type="text">PowerCollections学习笔记(1):术语解释</title><summary type="text">publicclassBag&amp;lt;T&amp;gt;:CollectionBase&amp;lt;T&amp;gt;,ICloneable//Bag&amp;lt;T&amp;gt;isacollectionthatcontainsitemsoftypeT.UnlikeaSet,duplicateitems(itemsthatcompareequaltoeachother)areallowedinanBag.publicclassBigList&amp;lt;T&amp;gt;:ListBase&amp;lt;T&amp;gt;,ICloneable//BigList&amp;lt;T&amp;gt;providesalistofitems,inorder,withindice</summary><published>2011-10-20T02:38:00Z</published><updated>2011-10-20T02:38:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_class_definition.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_class_definition.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Bag&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Bag&amp;lt;T&amp;gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;contains&amp;nbsp;items&amp;nbsp;of&amp;nbsp;type&amp;nbsp;T.&amp;nbsp;Unlike&amp;nbsp;a&amp;nbsp;Set,&amp;nbsp;duplicate&amp;nbsp;items&amp;nbsp;(items&amp;nbsp;that&amp;nbsp;compare&amp;nbsp;equal&amp;nbsp;to&amp;nbsp;each&amp;nbsp;other)&amp;nbsp;are&amp;nbsp;allowed&amp;nbsp;in&amp;nbsp;an&amp;nbsp;Bag.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;BigList&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;ListBase&amp;lt;T&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;BigList&amp;lt;T&amp;gt;&amp;nbsp;provides&amp;nbsp;a&amp;nbsp;list&amp;nbsp;of&amp;nbsp;items,&amp;nbsp;in&amp;nbsp;order,&amp;nbsp;with&amp;nbsp;indices&amp;nbsp;of&amp;nbsp;the&amp;nbsp;items&amp;nbsp;ranging&amp;nbsp;from&amp;nbsp;0&amp;nbsp;to&amp;nbsp;one&amp;nbsp;less&amp;nbsp;than&amp;nbsp;the&amp;nbsp;count&amp;nbsp;of&amp;nbsp;items&amp;nbsp;in&amp;nbsp;the&amp;nbsp;collection.&amp;nbsp;BigList&amp;lt;T&amp;gt;&amp;nbsp;is&amp;nbsp;optimized&amp;nbsp;for&amp;nbsp;efficient&amp;nbsp;operations&amp;nbsp;on&amp;nbsp;large&amp;nbsp;(&amp;gt;100&amp;nbsp;items)&amp;nbsp;lists,&amp;nbsp;especially&amp;nbsp;for&amp;nbsp;insertions,&amp;nbsp;deletions,&amp;nbsp;copies,&amp;nbsp;and&amp;nbsp;concatinations.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;ICollection,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;CollectionBase&amp;nbsp;is&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;more&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;ICollection&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;non-generic&amp;nbsp;ICollection&amp;nbsp;interfaces.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Deque&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;ListBase&amp;lt;T&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;Deque&amp;nbsp;class&amp;nbsp;implements&amp;nbsp;a&amp;nbsp;type&amp;nbsp;of&amp;nbsp;list&amp;nbsp;known&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Double&amp;nbsp;Ended&amp;nbsp;Queue.&amp;nbsp;A&amp;nbsp;Deque&amp;nbsp;is&amp;nbsp;quite&amp;nbsp;similar&amp;nbsp;to&amp;nbsp;a&amp;nbsp;List,&amp;nbsp;in&amp;nbsp;that&amp;nbsp;items&amp;nbsp;have&amp;nbsp;indices&amp;nbsp;(starting&amp;nbsp;at&amp;nbsp;0),&amp;nbsp;and&amp;nbsp;the&amp;nbsp;item&amp;nbsp;at&amp;nbsp;any&amp;nbsp;index&amp;nbsp;can&amp;nbsp;be&amp;nbsp;efficiently&amp;nbsp;retrieved.&amp;nbsp;The&amp;nbsp;difference&amp;nbsp;between&amp;nbsp;a&amp;nbsp;List&amp;nbsp;and&amp;nbsp;a&amp;nbsp;Deque&amp;nbsp;lies&amp;nbsp;in&amp;nbsp;the&amp;nbsp;efficiency&amp;nbsp;of&amp;nbsp;inserting&amp;nbsp;elements&amp;nbsp;at&amp;nbsp;the&amp;nbsp;beginning.&amp;nbsp;In&amp;nbsp;a&amp;nbsp;List,&amp;nbsp;items&amp;nbsp;can&amp;nbsp;be&amp;nbsp;efficiently&amp;nbsp;added&amp;nbsp;to&amp;nbsp;the&amp;nbsp;end,&amp;nbsp;but&amp;nbsp;inserting&amp;nbsp;an&amp;nbsp;item&amp;nbsp;at&amp;nbsp;the&amp;nbsp;beginning&amp;nbsp;of&amp;nbsp;the&amp;nbsp;List&amp;nbsp;is&amp;nbsp;slow,&amp;nbsp;taking&amp;nbsp;time&amp;nbsp;proportional&amp;nbsp;to&amp;nbsp;the&amp;nbsp;size&amp;nbsp;of&amp;nbsp;the&amp;nbsp;List.&amp;nbsp;In&amp;nbsp;a&amp;nbsp;Deque,&amp;nbsp;items&amp;nbsp;can&amp;nbsp;be&amp;nbsp;added&amp;nbsp;to&amp;nbsp;the&amp;nbsp;beginning&amp;nbsp;or&amp;nbsp;end&amp;nbsp;equally&amp;nbsp;efficiently,&amp;nbsp;regardless&amp;nbsp;of&amp;nbsp;the&amp;nbsp;number&amp;nbsp;of&amp;nbsp;items&amp;nbsp;in&amp;nbsp;the&amp;nbsp;Deque.&amp;nbsp;As&amp;nbsp;a&amp;nbsp;trade-off&amp;nbsp;for&amp;nbsp;this&amp;nbsp;increased&amp;nbsp;flexibility,&amp;nbsp;Deque&amp;nbsp;is&amp;nbsp;somewhat&amp;nbsp;slower&amp;nbsp;than&amp;nbsp;List&amp;nbsp;(but&amp;nbsp;still&amp;nbsp;constant&amp;nbsp;time)&amp;nbsp;when&amp;nbsp;being&amp;nbsp;indexed&amp;nbsp;to&amp;nbsp;get&amp;nbsp;or&amp;nbsp;retrieve&amp;nbsp;elements.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;DictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;gt;,&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;gt;,&amp;nbsp;IEnumerable&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IDictionary,&amp;nbsp;ICollection,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;DictionaryBase&amp;nbsp;is&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;more&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;IDictionary&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;non-generic&amp;nbsp;IDictionary&amp;nbsp;interfaces.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;ListBase&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;IList&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;IList,&amp;nbsp;ICollection,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;ListBase&amp;nbsp;is&amp;nbsp;an&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;as&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;for&amp;nbsp;a&amp;nbsp;read-write&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;non-generic&amp;nbsp;IList&amp;nbsp;collections.&amp;nbsp;The&amp;nbsp;derived&amp;nbsp;class&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;override&amp;nbsp;the&amp;nbsp;following&amp;nbsp;methods:&amp;nbsp;Count,&amp;nbsp;Clear,&amp;nbsp;Insert,&amp;nbsp;RemoveAt,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;indexer.&amp;nbsp;The&amp;nbsp;implementation&amp;nbsp;of&amp;nbsp;all&amp;nbsp;the&amp;nbsp;other&amp;nbsp;methods&amp;nbsp;in&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;IList&amp;nbsp;are&amp;nbsp;handled&amp;nbsp;by&amp;nbsp;ListBase.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;MultiDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;MultiDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;MultiDictionary&amp;nbsp;class&amp;nbsp;that&amp;nbsp;associates&amp;nbsp;values&amp;nbsp;with&amp;nbsp;a&amp;nbsp;key.&amp;nbsp;Unlike&amp;nbsp;an&amp;nbsp;Dictionary,&amp;nbsp;each&amp;nbsp;key&amp;nbsp;can&amp;nbsp;have&amp;nbsp;multiple&amp;nbsp;values&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;it.&amp;nbsp;When&amp;nbsp;indexing&amp;nbsp;an&amp;nbsp;MultiDictionary,&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;a&amp;nbsp;single&amp;nbsp;value&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;a&amp;nbsp;key,&amp;nbsp;you&amp;nbsp;retrieve&amp;nbsp;an&amp;nbsp;enumeration&amp;nbsp;of&amp;nbsp;values.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;MultiDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;gt;,&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;gt;,&amp;nbsp;IEnumerable&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;MultiDictionaryBase&amp;nbsp;is&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;more&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;a&amp;nbsp;class&amp;nbsp;that&amp;nbsp;associates&amp;nbsp;multiple&amp;nbsp;values&amp;nbsp;to&amp;nbsp;a&amp;nbsp;single&amp;nbsp;key.&amp;nbsp;The&amp;nbsp;class&amp;nbsp;implements&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;nbsp;interface.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;OrderedBag&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;OrderedBag&amp;lt;T&amp;gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;contains&amp;nbsp;items&amp;nbsp;of&amp;nbsp;type&amp;nbsp;T.&amp;nbsp;The&amp;nbsp;item&amp;nbsp;are&amp;nbsp;maintained&amp;nbsp;in&amp;nbsp;a&amp;nbsp;sorted&amp;nbsp;order.&amp;nbsp;Unlike&amp;nbsp;a&amp;nbsp;OrderedSet,&amp;nbsp;duplicate&amp;nbsp;items&amp;nbsp;(items&amp;nbsp;that&amp;nbsp;compare&amp;nbsp;equal&amp;nbsp;to&amp;nbsp;each&amp;nbsp;other)&amp;nbsp;are&amp;nbsp;allows&amp;nbsp;in&amp;nbsp;an&amp;nbsp;OrderedBag.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;View&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;OrderedBag&amp;lt;T&amp;gt;.View&amp;nbsp;class&amp;nbsp;is&amp;nbsp;used&amp;nbsp;to&amp;nbsp;look&amp;nbsp;at&amp;nbsp;a&amp;nbsp;subset&amp;nbsp;of&amp;nbsp;the&amp;nbsp;items&amp;nbsp;inside&amp;nbsp;an&amp;nbsp;ordered&amp;nbsp;bag.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;returned&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Range,&amp;nbsp;RangeTo,&amp;nbsp;RangeFrom,&amp;nbsp;and&amp;nbsp;Reversed&amp;nbsp;methods.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;OrderedDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;DictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;OrderedDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;maps&amp;nbsp;keys&amp;nbsp;of&amp;nbsp;type&amp;nbsp;TKey&amp;nbsp;to&amp;nbsp;values&amp;nbsp;of&amp;nbsp;type&amp;nbsp;TValue.&amp;nbsp;The&amp;nbsp;keys&amp;nbsp;are&amp;nbsp;maintained&amp;nbsp;in&amp;nbsp;a&amp;nbsp;sorted&amp;nbsp;order,&amp;nbsp;and&amp;nbsp;at&amp;nbsp;most&amp;nbsp;one&amp;nbsp;value&amp;nbsp;is&amp;nbsp;permitted&amp;nbsp;for&amp;nbsp;each&amp;nbsp;key.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;View&amp;nbsp;:&amp;nbsp;DictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;OrderedDictionary&amp;lt;TKey,TValue&amp;gt;.View&amp;nbsp;class&amp;nbsp;is&amp;nbsp;used&amp;nbsp;to&amp;nbsp;look&amp;nbsp;at&amp;nbsp;a&amp;nbsp;subset&amp;nbsp;of&amp;nbsp;the&amp;nbsp;keys&amp;nbsp;and&amp;nbsp;values&amp;nbsp;inside&amp;nbsp;an&amp;nbsp;ordered&amp;nbsp;dictionary.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;returned&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Range,&amp;nbsp;RangeTo,&amp;nbsp;RangeFrom,&amp;nbsp;and&amp;nbsp;Reversed&amp;nbsp;methods.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;OrderedMultiDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;MultiDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;OrderedMultiDictionary&amp;nbsp;class&amp;nbsp;that&amp;nbsp;associates&amp;nbsp;values&amp;nbsp;with&amp;nbsp;a&amp;nbsp;key.&amp;nbsp;Unlike&amp;nbsp;an&amp;nbsp;OrderedDictionary,&amp;nbsp;each&amp;nbsp;key&amp;nbsp;can&amp;nbsp;have&amp;nbsp;multiple&amp;nbsp;values&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;it.&amp;nbsp;When&amp;nbsp;indexing&amp;nbsp;an&amp;nbsp;OrderedMultidictionary,&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;a&amp;nbsp;single&amp;nbsp;value&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;a&amp;nbsp;key,&amp;nbsp;you&amp;nbsp;retrieve&amp;nbsp;an&amp;nbsp;enumeration&amp;nbsp;of&amp;nbsp;values.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;All&amp;nbsp;of&amp;nbsp;the&amp;nbsp;key&amp;nbsp;are&amp;nbsp;stored&amp;nbsp;in&amp;nbsp;sorted&amp;nbsp;order.&amp;nbsp;Also,&amp;nbsp;the&amp;nbsp;values&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;a&amp;nbsp;given&amp;nbsp;key&amp;nbsp;are&amp;nbsp;kept&amp;nbsp;in&amp;nbsp;sorted&amp;nbsp;order&amp;nbsp;as&amp;nbsp;well.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;When&amp;nbsp;constructed,&amp;nbsp;you&amp;nbsp;can&amp;nbsp;chose&amp;nbsp;to&amp;nbsp;allow&amp;nbsp;the&amp;nbsp;same&amp;nbsp;value&amp;nbsp;to&amp;nbsp;be&amp;nbsp;associated&amp;nbsp;with&amp;nbsp;a&amp;nbsp;key&amp;nbsp;multiple&amp;nbsp;times,&amp;nbsp;or&amp;nbsp;only&amp;nbsp;one&amp;nbsp;time.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;View&amp;nbsp;:&amp;nbsp;MultiDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;OrderedMultiDictionary&amp;lt;TKey,TValue&amp;gt;.View&amp;nbsp;class&amp;nbsp;is&amp;nbsp;used&amp;nbsp;to&amp;nbsp;look&amp;nbsp;at&amp;nbsp;a&amp;nbsp;subset&amp;nbsp;of&amp;nbsp;the&amp;nbsp;keys&amp;nbsp;and&amp;nbsp;values&amp;nbsp;inside&amp;nbsp;an&amp;nbsp;ordered&amp;nbsp;multi-dictionary.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;returned&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Range,&amp;nbsp;RangeTo,&amp;nbsp;RangeFrom,&amp;nbsp;and&amp;nbsp;Reversed&amp;nbsp;methods.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;OrderedSet&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;IEnumerable,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;OrderedSet&amp;lt;T&amp;gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;contains&amp;nbsp;items&amp;nbsp;of&amp;nbsp;type&amp;nbsp;T.&amp;nbsp;The&amp;nbsp;item&amp;nbsp;are&amp;nbsp;maintained&amp;nbsp;in&amp;nbsp;a&amp;nbsp;sorted&amp;nbsp;order,&amp;nbsp;and&amp;nbsp;duplicate&amp;nbsp;items&amp;nbsp;are&amp;nbsp;not&amp;nbsp;allowed.&amp;nbsp;Each&amp;nbsp;item&amp;nbsp;has&amp;nbsp;an&amp;nbsp;index&amp;nbsp;in&amp;nbsp;the&amp;nbsp;set:&amp;nbsp;the&amp;nbsp;smallest&amp;nbsp;item&amp;nbsp;has&amp;nbsp;index&amp;nbsp;0,&amp;nbsp;the&amp;nbsp;next&amp;nbsp;smallest&amp;nbsp;item&amp;nbsp;has&amp;nbsp;index&amp;nbsp;1,&amp;nbsp;and&amp;nbsp;so&amp;nbsp;forth.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;View&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;The&amp;nbsp;OrderedSet&amp;lt;T&amp;gt;.View&amp;nbsp;class&amp;nbsp;is&amp;nbsp;used&amp;nbsp;to&amp;nbsp;look&amp;nbsp;at&amp;nbsp;a&amp;nbsp;subset&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Items&amp;nbsp;inside&amp;nbsp;an&amp;nbsp;ordered&amp;nbsp;set.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;returned&amp;nbsp;from&amp;nbsp;the&amp;nbsp;Range,&amp;nbsp;RangeTo,&amp;nbsp;RangeFrom,&amp;nbsp;and&amp;nbsp;Reversed&amp;nbsp;methods.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&amp;nbsp;Pair&amp;lt;TFirst,&amp;nbsp;TSecond&amp;gt;&amp;nbsp;:&amp;nbsp;IComparable,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IComparable&amp;lt;Pair&amp;lt;TFirst,&amp;nbsp;TSecond&amp;gt;&amp;gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Stores&amp;nbsp;a&amp;nbsp;pair&amp;nbsp;of&amp;nbsp;objects&amp;nbsp;within&amp;nbsp;a&amp;nbsp;single&amp;nbsp;struct.&amp;nbsp;This&amp;nbsp;struct&amp;nbsp;is&amp;nbsp;useful&amp;nbsp;to&amp;nbsp;use&amp;nbsp;as&amp;nbsp;the&amp;nbsp;T&amp;nbsp;of&amp;nbsp;a&amp;nbsp;collection,&amp;nbsp;or&amp;nbsp;as&amp;nbsp;the&amp;nbsp;TKey&amp;nbsp;or&amp;nbsp;TValue&amp;nbsp;of&amp;nbsp;a&amp;nbsp;dictionary.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;ReadOnlyCollectionBase&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;ICollection,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;ReadOnlyCollectionBase&amp;nbsp;is&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;more&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;ICollection&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;non-generic&amp;nbsp;ICollection&amp;nbsp;interfaces&amp;nbsp;for&amp;nbsp;a&amp;nbsp;read-only&amp;nbsp;collection:&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;does&amp;nbsp;not&amp;nbsp;allow&amp;nbsp;adding&amp;nbsp;or&amp;nbsp;removing&amp;nbsp;elements.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;ReadOnlyDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;ReadOnlyCollectionBase&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;gt;,&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;gt;,&amp;nbsp;IEnumerable&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IDictionary,&amp;nbsp;ICollection,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;ReadOnlyDictionaryBase&amp;nbsp;is&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;more&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;IDictionary&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;non-generic&amp;nbsp;IDictionary&amp;nbsp;interfaces.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;ReadOnlyListBase&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;ReadOnlyCollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;IList&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;IList,&amp;nbsp;ICollection,&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;ReadOnlyListBase&amp;nbsp;is&amp;nbsp;an&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;as&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;for&amp;nbsp;a&amp;nbsp;read-only&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;non-generic&amp;nbsp;IList&amp;nbsp;collections.&amp;nbsp;The&amp;nbsp;derived&amp;nbsp;class&amp;nbsp;needs&amp;nbsp;to&amp;nbsp;override&amp;nbsp;the&amp;nbsp;Count&amp;nbsp;property&amp;nbsp;and&amp;nbsp;the&amp;nbsp;get&amp;nbsp;part&amp;nbsp;of&amp;nbsp;the&amp;nbsp;indexer.&amp;nbsp;The&amp;nbsp;implementation&amp;nbsp;of&amp;nbsp;all&amp;nbsp;the&amp;nbsp;other&amp;nbsp;methods&amp;nbsp;in&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;and&amp;nbsp;IList&amp;nbsp;are&amp;nbsp;handled&amp;nbsp;by&amp;nbsp;ListBase.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;abstract&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;ReadOnlyMultiDictionaryBase&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;:&amp;nbsp;ReadOnlyCollectionBase&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;gt;,&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICollection&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;gt;,&amp;nbsp;IEnumerable&amp;lt;KeyValuePair&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;MultiDictionaryBase&amp;nbsp;is&amp;nbsp;a&amp;nbsp;base&amp;nbsp;class&amp;nbsp;that&amp;nbsp;can&amp;nbsp;be&amp;nbsp;used&amp;nbsp;to&amp;nbsp;more&amp;nbsp;easily&amp;nbsp;implement&amp;nbsp;a&amp;nbsp;class&amp;nbsp;that&amp;nbsp;associates&amp;nbsp;multiple&amp;nbsp;values&amp;nbsp;to&amp;nbsp;a&amp;nbsp;single&amp;nbsp;key.&amp;nbsp;The&amp;nbsp;class&amp;nbsp;implements&amp;nbsp;the&amp;nbsp;generic&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;ICollection&amp;lt;TValue&amp;gt;&amp;gt;&amp;nbsp;interface.&amp;nbsp;The&amp;nbsp;resulting&amp;nbsp;collection&amp;nbsp;is&amp;nbsp;read-only&amp;nbsp;--&amp;nbsp;items&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;added&amp;nbsp;or&amp;nbsp;removed.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Set&amp;lt;T&amp;gt;&amp;nbsp;:&amp;nbsp;CollectionBase&amp;lt;T&amp;gt;,&amp;nbsp;ICollection&amp;lt;T&amp;gt;,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;,&amp;nbsp;IEnumerable,&amp;nbsp;ICloneable&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Set&amp;lt;T&amp;gt;&amp;nbsp;is&amp;nbsp;a&amp;nbsp;collection&amp;nbsp;that&amp;nbsp;contains&amp;nbsp;items&amp;nbsp;of&amp;nbsp;type&amp;nbsp;T.&amp;nbsp;The&amp;nbsp;item&amp;nbsp;are&amp;nbsp;maintained&amp;nbsp;in&amp;nbsp;a&amp;nbsp;haphazard,&amp;nbsp;unpredictable&amp;nbsp;order,&amp;nbsp;and&amp;nbsp;duplicate&amp;nbsp;items&amp;nbsp;are&amp;nbsp;not&amp;nbsp;allowed.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;struct&lt;/span&gt;&amp;nbsp;Triple&amp;lt;TFirst,&amp;nbsp;TSecond,&amp;nbsp;TThird&amp;gt;&amp;nbsp;:&amp;nbsp;IComparable,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IComparable&amp;lt;Triple&amp;lt;TFirst,&amp;nbsp;TSecond,&amp;nbsp;TThird&amp;gt;&amp;gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Stores&amp;nbsp;a&amp;nbsp;triple&amp;nbsp;of&amp;nbsp;objects&amp;nbsp;within&amp;nbsp;a&amp;nbsp;single&amp;nbsp;struct.&amp;nbsp;This&amp;nbsp;struct&amp;nbsp;is&amp;nbsp;useful&amp;nbsp;to&amp;nbsp;use&amp;nbsp;as&amp;nbsp;the&amp;nbsp;T&amp;nbsp;of&amp;nbsp;a&amp;nbsp;collection,&amp;nbsp;or&amp;nbsp;as&amp;nbsp;the&amp;nbsp;TKey&amp;nbsp;or&amp;nbsp;TValue&amp;nbsp;of&amp;nbsp;a&amp;nbsp;dictionary.&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Algorithms&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;BinarySearch&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;index)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;BinarySearch&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;index);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;BinarySearch&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;index);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;Pair&amp;lt;TFirst,&amp;nbsp;TSecond&amp;gt;&amp;gt;&amp;nbsp;CartesianProduct&amp;lt;TFirst,&amp;nbsp;TSecond&amp;gt;(IEnumerable&amp;lt;TFirst&amp;gt;&amp;nbsp;first,&amp;nbsp;IEnumerable&amp;lt;TSecond&amp;gt;&amp;nbsp;second);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;Concatenate&amp;lt;T&amp;gt;(&lt;span style="color: #0000FF;"&gt;params&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;[]&amp;nbsp;collections);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;TDest&amp;gt;&amp;nbsp;Convert&amp;lt;TSource,&amp;nbsp;TDest&amp;gt;(IEnumerable&amp;lt;TSource&amp;gt;&amp;nbsp;sourceCollection,&amp;nbsp;Converter&amp;lt;TSource,&amp;nbsp;TDest&amp;gt;&amp;nbsp;converter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Copy&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;dest,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;destIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Copy&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;T[]&amp;nbsp;dest,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;destIndex);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Copy&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;dest,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;destIndex,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Copy&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;T[]&amp;nbsp;dest,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;destIndex,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Copy&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;sourceIndex,&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;dest,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;destIndex,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Copy&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;sourceIndex,&amp;nbsp;T[]&amp;nbsp;dest,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;destIndex,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;Count&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;CountEqual&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;T&amp;nbsp;find);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;CountEqual&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;T&amp;nbsp;find,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;CountWhere&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;DisjointSets&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;DisjointSets&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;EqualCollections&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;EqualCollections&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;EqualCollections&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;EqualSets&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;EqualSets&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;Exists&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Fill&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Fill&amp;lt;T&amp;gt;(T[]&amp;nbsp;array,&amp;nbsp;T&amp;nbsp;value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;FillRange&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;start,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count,&amp;nbsp;T&amp;nbsp;value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;FillRange&amp;lt;T&amp;gt;(T[]&amp;nbsp;array,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;start,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count,&amp;nbsp;T&amp;nbsp;value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FindFirstIndexWhere&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;FindFirstWhere&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;gt;&amp;nbsp;FindIndicesWhere&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FindLastIndexWhere&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;FindLastWhere&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;FindWhere&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstConsecutiveEqual&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstConsecutiveEqual&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstConsecutiveEqual&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstConsecutiveWhere&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstIndexOf&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstIndexOf&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstIndexOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstIndexOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;FirstIndexOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;ForEach&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Action&amp;lt;T&amp;gt;&amp;nbsp;action);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T[]&amp;gt;&amp;nbsp;GeneratePermutations&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T[]&amp;gt;&amp;nbsp;GenerateSortedPermutations&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T[]&amp;gt;&amp;nbsp;GenerateSortedPermutations&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T[]&amp;gt;&amp;nbsp;GenerateSortedPermutations&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEqualityComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetCollectionEqualityComparer&amp;lt;T&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEqualityComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetCollectionEqualityComparer&amp;lt;T&amp;gt;(IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;GetComparerFromComparison&amp;lt;T&amp;gt;(Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;GetComparisonFromComparer&amp;lt;T&amp;gt;(IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;Converter&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;GetDictionaryConverter&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;(IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;dictionary);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;Converter&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;GetDictionaryConverter&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;(IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;dictionary,&amp;nbsp;TValue&amp;nbsp;defaultValue);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;GetIdentityComparer&amp;lt;T&amp;gt;()&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetLexicographicalComparer&amp;lt;T&amp;gt;()&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetLexicographicalComparer&amp;lt;T&amp;gt;(Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetLexicographicalComparer&amp;lt;T&amp;gt;(IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;GetReverseComparer&amp;lt;T&amp;gt;(IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;GetReverseComparison&amp;lt;T&amp;gt;(Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEqualityComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetSetEqualityComparer&amp;lt;T&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEqualityComparer&amp;lt;IEnumerable&amp;lt;T&amp;gt;&amp;gt;&amp;nbsp;GetSetEqualityComparer&amp;lt;T&amp;gt;(IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;IndexOfMaximum&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;IndexOfMaximum&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;IndexOfMaximum&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;IndexOfMinimum&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;IndexOfMinimum&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;IndexOfMinimum&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;gt;&amp;nbsp;IndicesOf&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;gt;&amp;nbsp;IndicesOf&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;gt;&amp;nbsp;IndicesOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;gt;&amp;nbsp;IndicesOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;gt;&amp;nbsp;IndicesOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;IsProperSubsetOf&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;IsProperSubsetOf&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;IsSubsetOf&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;IsSubsetOf&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LastIndexOf&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LastIndexOf&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;item,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LastIndexOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LastIndexOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LastIndexOfMany&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;itemsToLookFor,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LexicographicalCompare&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;sequence1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;sequence2)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LexicographicalCompare&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;sequence1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;sequence2,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;LexicographicalCompare&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;sequence1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;sequence2,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;Maximum&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;Maximum&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;Maximum&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;MergeSorted&amp;lt;T&amp;gt;(&lt;span style="color: #0000FF;"&gt;params&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;[]&amp;nbsp;collections)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;MergeSorted&amp;lt;T&amp;gt;(Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;params&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;[]&amp;nbsp;collections);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;MergeSorted&amp;lt;T&amp;gt;(IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;params&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;[]&amp;nbsp;collections);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;Minimum&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;Minimum&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;Minimum&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;NCopiesOf&amp;lt;T&amp;gt;(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;n,&amp;nbsp;T&amp;nbsp;item);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;Partition&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;RandomShuffle&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;RandomShuffle&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Random&amp;nbsp;randomGenerator);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;RandomShuffleInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;RandomShuffleInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Random&amp;nbsp;randomGenerator);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;RandomSubset&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;RandomSubset&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count,&amp;nbsp;Random&amp;nbsp;randomGenerator);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;Range&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;start,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;Range&amp;lt;T&amp;gt;(T[]&amp;nbsp;array,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;start,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;count);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;ICollection&amp;lt;T&amp;gt;&amp;nbsp;ReadOnly&amp;lt;T&amp;gt;(ICollection&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;ReadOnly&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;(IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;dictionary);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;ReadOnly&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;ReadWriteList&amp;lt;T&amp;gt;(T[]&amp;nbsp;array);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;RemoveDuplicates&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;RemoveDuplicates&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;RemoveDuplicates&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;RemoveDuplicatesInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;RemoveDuplicatesInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;RemoveDuplicatesInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;ICollection&amp;lt;T&amp;gt;&amp;nbsp;RemoveWhere&amp;lt;T&amp;gt;(ICollection&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;Replace&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate,&amp;nbsp;T&amp;nbsp;replaceWith);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;Replace&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;T&amp;nbsp;itemFind,&amp;nbsp;T&amp;nbsp;replaceWith);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;Replace&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;T&amp;nbsp;itemFind,&amp;nbsp;T&amp;nbsp;replaceWith,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;ReplaceInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate,&amp;nbsp;T&amp;nbsp;replaceWith);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;ReplaceInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;itemFind,&amp;nbsp;T&amp;nbsp;replaceWith);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;ReplaceInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;T&amp;nbsp;itemFind,&amp;nbsp;T&amp;nbsp;replaceWith,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;Reverse&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;source);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;ReverseInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;Rotate&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;source,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;amountToRotate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;RotateInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;amountToRotate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;SearchForSubsequence&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;pattern);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;SearchForSubsequence&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;pattern,&amp;nbsp;BinaryPredicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;SearchForSubsequence&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;pattern,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetDifference&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetDifference&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetIntersection&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetIntersection&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetSymmetricDifference&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetSymmetricDifference&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetUnion&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;SetUnion&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection1,&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection2,&amp;nbsp;IEqualityComparer&amp;lt;T&amp;gt;&amp;nbsp;equalityComparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;Sort&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;Sort&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;Sort&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;SortInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;SortInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;SortInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;StablePartition&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;StableSort&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;StableSort&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;StableSort&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;StableSortInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list)&amp;nbsp;&lt;span style="color: #0000FF;"&gt;where&lt;/span&gt;&amp;nbsp;T&amp;nbsp;:&amp;nbsp;IComparable&amp;lt;T&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;StableSortInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;Comparison&amp;lt;T&amp;gt;&amp;nbsp;comparison);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;StableSortInPlace&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;list,&amp;nbsp;IComparer&amp;lt;T&amp;gt;&amp;nbsp;comparer);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T[]&amp;nbsp;ToArray&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;ToString&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;(IDictionary&amp;lt;TKey,&amp;nbsp;TValue&amp;gt;&amp;nbsp;dictionary);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;ToString&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;ToString&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;recursive,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;start,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;separator,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;end);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;TrueForAll&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;TryFindFirstWhere&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;nbsp;T&amp;nbsp;foundItem);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;TryFindLastWhere&amp;lt;T&amp;gt;(IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;collection,&amp;nbsp;Predicate&amp;lt;T&amp;gt;&amp;nbsp;predicate,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;out&lt;/span&gt;&amp;nbsp;T&amp;nbsp;foundItem);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;ICollection&amp;lt;T&amp;gt;&amp;nbsp;TypedAs&amp;lt;T&amp;gt;(ICollection&amp;nbsp;untypedCollection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IEnumerable&amp;lt;T&amp;gt;&amp;nbsp;TypedAs&amp;lt;T&amp;gt;(IEnumerable&amp;nbsp;untypedCollection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IList&amp;lt;T&amp;gt;&amp;nbsp;TypedAs&amp;lt;T&amp;gt;(IList&amp;nbsp;untypedList);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;ICollection&amp;nbsp;Untyped&amp;lt;T&amp;gt;(ICollection&amp;lt;T&amp;gt;&amp;nbsp;typedCollection);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IList&amp;nbsp;Untyped&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt;&amp;nbsp;typedList);&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2218631.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/10/20/PowerCollections_class_definition.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/10/14/meaning_of_backlog.html</id><title type="text">Listen(int backlog)的意义</title><summary type="text">理想情况是:usingSystem;usingSystem.Collections.Generic;usingSystem.Threading;usingSystem.Text;usingSystem.Diagnostics;usingSystem.Net;usingSystem.IO;usingSystem.Net.Sockets;namespaceHTTPProxyServer{classProgram{staticvoidMain(string[]args){Server.Start(10);IPHostEntryIpEntry=Dns.GetHostEntry(Dns.GetHostN</summary><published>2011-10-14T02:15:00Z</published><updated>2011-10-14T02:15:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/10/14/meaning_of_backlog.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/10/14/meaning_of_backlog.html"/><content type="html">&lt;p&gt;理想情况是:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/huazhihao/untitled.JPG" width="259" height="509" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Threading;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Text;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Diagnostics;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Net;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Net.Sockets;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&amp;nbsp;HTTPProxyServer&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Program&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server.Start(&lt;span style="color: #800080;"&gt;10&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPHostEntry&amp;nbsp;IpEntry&amp;nbsp;=&amp;nbsp;Dns.GetHostEntry(Dns.GetHostName());&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;&lt;span style="color: #800080;"&gt;20&lt;/span&gt;;&amp;nbsp;i++)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;client&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;Socket(AddressFamily.InterNetwork,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketType.Stream,&amp;nbsp;ProtocolType.Tcp);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;client.Connect(&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;IPEndPoint(IpEntry.AddressList[&lt;span style="color: #800080;"&gt;0&lt;/span&gt;],&amp;nbsp;&lt;span style="color: #800080;"&gt;8080&lt;/span&gt;));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(i&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;:&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;client.Connected);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; background-color: #f5f5f5; "&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Linq;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Text;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Net.Sockets;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Net;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Threading;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&amp;nbsp;HTTPProxyServer&lt;br /&gt;&#xD;
{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Server&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&amp;nbsp;Socket&amp;nbsp;listener&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;readonly&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;Server&amp;nbsp;instance;&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;Server()&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;Server();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance.listener&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;Socket(AddressFamily.InterNetwork,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SocketType.Stream,&amp;nbsp;ProtocolType.Tcp);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Start(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;number)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread&amp;nbsp;thread&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;Thread(&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;ParameterizedThreadStart((&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;backlog)&amp;nbsp;=&amp;gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IPHostEntry&amp;nbsp;IpEntry&amp;nbsp;=&amp;nbsp;Dns.GetHostEntry(Dns.GetHostName());&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;IpEntry.AddressList.Length;&amp;nbsp;i++)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance.listener.Bind(&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;IPEndPoint(IpEntry.AddressList[i],&amp;nbsp;&lt;span style="color: #800080;"&gt;8080&lt;/span&gt;));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bind&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;IpEntry.AddressList[i].AddressFamily);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance.listener.Listen((&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;)backlog);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;try&lt;/span&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance.listener.BeginAccept(&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;AsyncCallback(AcceptCallback),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instance.listener);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;catch&lt;/span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(e.ToString());&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}));&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thread.Start(number);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;AcceptCallback(IAsyncResult&amp;nbsp;ar)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;listener&amp;nbsp;=&amp;nbsp;(Socket)ar.AsyncState;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Socket&amp;nbsp;handler&amp;nbsp;=&amp;nbsp;listener.EndAccept(ar);&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;conneceted&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;handler.RemoteEndPoint.ToString());&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;todo&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;handler.BeginReceive(state.buffer,&amp;nbsp;0,&amp;nbsp;StateObject.BufferSize,&amp;nbsp;0,&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new&amp;nbsp;AsyncCallback(ReadCallback),&amp;nbsp;state);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; background-color: #f5f5f5; "&gt;}&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2211212.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/10/14/meaning_of_backlog.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/08/03/sql_bool_expression_neither_true_nor_false.html</id><title type="text">SQL中布尔表达式的非二项性</title><summary type="text">通常大部分语言中&amp;quot;布尔表达式&amp;quot;的值不是True就是False。然而也有个把例外，比如SQL中，你可以尝试运行以下两行代码，select 1 where 1 not in (null)select 1 where 1 in (null)有意思的是它们都返回0行结果。</summary><published>2011-08-03T09:32:00Z</published><updated>2011-08-03T09:32:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/08/03/sql_bool_expression_neither_true_nor_false.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/08/03/sql_bool_expression_neither_true_nor_false.html"/><content type="html">&lt;p&gt;通常大部分语言中"布尔表达式"的值不是True就是False。然而也有个把例外，比如SQL中，你可以尝试运行以下两行代码，&lt;/p&gt;&lt;div&gt;&lt;div&gt;select 1 where 1 not in (null)&lt;/div&gt;&lt;/div&gt;&lt;p&gt;select 1 where 1 in (null)&amp;nbsp;&lt;/p&gt;&lt;p&gt;有意思的是它们都返回0行结果。&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2126473.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/08/03/sql_bool_expression_neither_true_nor_false.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/07/13/Notes_of_dm_exec_query_stats.html</id><title type="text">dm_exec_query_stats 几点心得</title><summary type="text">dm_exec_query_stats是MS SQL Server2005新提供的系统函数，初次使用发现功能非常全面。可以提供一些特殊的解决问题的思路。1SELECTqs.execution_count,2SUBSTRING(qt.text,qs.statement_start_offset/2+1,3(CASEWHENqs.statement_end_offset=-14THENLEN(CONVERT(nvarchar(max),qt.text))*25ELSEqs.statement_end_offsetend-6qs.statement_start_offset7)/28)ASquery</summary><published>2011-07-13T07:41:00Z</published><updated>2011-07-13T07:41:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/07/13/Notes_of_dm_exec_query_stats.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/07/13/Notes_of_dm_exec_query_stats.html"/><content type="html">&lt;div&gt;dm_exec_query_stats是MS SQL Server2005新提供的系统函数，初次使用发现功能非常全面。可以提供一些特殊的解决问题的思路。&lt;/div&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qs.execution_count,&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color: #000000;"&gt;(qt.&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;text&lt;/span&gt;&lt;span style="color: #000000;"&gt;,qs.statement_start_offset&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;CASE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qs.statement_end_offset&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;THEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;LEN&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;CONVERT&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;nvarchar&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;max&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&amp;nbsp;qt.&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;text&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ELSE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qs.statement_end_offset&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;end&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qs.statement_start_offset&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;/span&gt;&lt;span style="color: #808080;"&gt;/&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;query_text,&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qt.dbid,&amp;nbsp;dbname&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF00FF;"&gt;DB_NAME&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;(qt.dbid),&amp;nbsp;qt.objectid,&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qs.total_rows,&amp;nbsp;qs.last_rows,&amp;nbsp;qs.min_rows,&amp;nbsp;qs.max_rows&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;sys.dm_exec_query_stats&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qs&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;CROSS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;APPLY&amp;nbsp;sys.dm_exec_sql_text(qs.sql_handle)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qt&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qt.&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;text&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;like&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;%SELECT%&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;ORDER&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;qs.execution_count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;DESC&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;1 如果目标数据库查询有问题，可以尝试切换成master DB&lt;/p&gt;&#xD;
&lt;p&gt;2 sql_handle的类型为 varbinary(64)&amp;nbsp;，在CLR里被转换成byte[]。可以使用&amp;nbsp;sys.fn_varbintohexstr(sql_handle)进行序列化。&lt;/p&gt;&#xD;
&lt;p&gt;3&amp;nbsp;dbcc freeProcCache&amp;nbsp;用来清除缓存&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2105383.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/07/13/Notes_of_dm_exec_query_stats.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/04/25/Graceful_Socket_Closure.html</id><title type="text">Graceful Shutdown, Linger Options, and Socket Closure</title><summary type="text">Client sideServer side(1) Invokesshutdown(s, SD_SEND) to signal end of session and that client has no more data to send.(2) Receives FD_CLOSE, indicating graceful shutdown in progress and that all data has been received.(3) Sends any remaining response data.(local timing significance only) Gets FD_R</summary><published>2011-04-25T03:41:00Z</published><updated>2011-04-25T03:41:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/04/25/Graceful_Socket_Closure.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/04/25/Graceful_Socket_Closure.html"/><content type="html">&lt;div&gt;&lt;span style="font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; line-height: normal; "&gt;&lt;table style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; border-collapse: collapse; width: 955px; "&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top; "&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;th style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #e5e5e5; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; padding-top: 4px; text-align: left; height: 21px; font-family: 'Segoe UI', Verdana, Arial; font-size: 1.077em; color: #000000; font-style: normal; font-weight: normal; "&gt;Client side&lt;/th&gt;&lt;th style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #e5e5e5; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; padding-top: 4px; text-align: left; height: 21px; font-family: 'Segoe UI', Verdana, Arial; font-size: 1.077em; color: #000000; font-style: normal; font-weight: normal; "&gt;Server side&lt;/th&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(1) Invokes&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms740481(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;shutdown&lt;/strong&gt;&lt;/a&gt;(s, SD_SEND) to signal end of session and that client has no more data to send.&lt;/td&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;&lt;/td&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(2) Receives FD_CLOSE, indicating graceful shutdown in progress and that all data has been received.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;&lt;/td&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(3) Sends any remaining response data.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(local timing significance only) Gets FD_READ and calls&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms740121(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;recv&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;to get any response data sent by server .&lt;/td&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(4) Invokes&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms740481(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;shutdown&lt;/strong&gt;&lt;/a&gt;(s, SD_SEND) to indicate server has no more data to send.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(5) Receives FD_CLOSE indication.&lt;/td&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(local timing significance only) Invokes&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="vertical-align: top; "&gt;&lt;td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #bbbbbb; border-right-color: #bbbbbb; border-bottom-color: #bbbbbb; border-left-color: #bbbbbb; background-color: #ffffff; line-height: 18px; padding-right: 4px; padding-left: 4px; padding-bottom: 4px; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; padding-top: 4px; "&gt;(6) Invokes&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; line-height: normal; "&gt;&lt;p&gt;The following material is provided as clarification for the subject of shutting down socket connections closing the sockets. It is important to distinguish the difference between shutting down a socket connection and closing a socket.&lt;/p&gt;&lt;p&gt;Shutting down a socket connection involves an exchange of protocol messages between the two endpoints, hereafter referred to as a shutdown sequence. Two general classes of shutdown sequences are defined: graceful and abortive (also called hard). In a graceful shutdown sequence, any data that has been queued, but not yet transmitted can be sent prior to the connection being closed. In an abortive shutdown, any unsent data is lost. The occurrence of a shutdown sequence (graceful or abortive) can also be used to provide an FD_CLOSE indication to the associated applications signifying that a shutdown is in progress.&lt;/p&gt;&lt;p&gt;Closing a socket, on the other hand, causes the socket handle to become deallocated so that the application can no longer reference or use the socket in any manner.&lt;/p&gt;&lt;p&gt;In Windows Sockets, both the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms740481(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;shutdown&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;function, and the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms741691(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;WSASendDisconnect&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;function can be used to initiate a shutdown sequence, while the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;function is used to deallocate socket handles and free up any associated resources. Some amount of confusion arises, however, from the fact that the&amp;nbsp;&lt;strong&gt;closesocket&lt;/strong&gt;function implicitly causes a shutdown sequence to occur if it has not already happened. In fact, it has become a rather common programming practice to rely on this feature and to use&amp;nbsp;&lt;strong&gt;closesocket&lt;/strong&gt;&amp;nbsp;to both initiate the shutdown sequence and deallocate the socket handle.&lt;/p&gt;&lt;p&gt;To facilitate this usage, the sockets interface provides for controls by way of the socket option mechanism that allow the programmer to indicate whether the implicit shutdown sequence should be graceful or abortive, and also whether the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;function should linger (that is not complete immediately) to allow time for a graceful shutdown sequence to complete. These important distinctions and the ramifications of using&amp;nbsp;&lt;strong&gt;closesocket&lt;/strong&gt;&amp;nbsp;in this manner are still not widely understood.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;By establishing appropriate values for the socket options SO_LINGER and SO_DONTLINGER, the following types of behavior can be obtained with the&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;function:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Abortive shutdown sequence, immediate return from&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Graceful shutdown, delaying return until either shutdown sequence completes or a specified time interval elapses. If the time interval expires before the graceful shutdown sequence completes, an abortive shutdown sequence occurs, and&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;returns.&lt;/li&gt;&lt;li&gt;Graceful shutdown, immediate return&amp;#8212;allowing the shutdown sequence to complete in the background. Although this is the default behavior, the application has no way of knowing when (or whether) the graceful shutdown sequence actually completes.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The use of the SO_LINGER and SO_DONTLINGER socket options and the associated&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms739165(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;linger&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;structure is discussed in more detail in the reference sections on&lt;a href="http://msdn.microsoft.com/en-us/library/ms740532(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;SOL_SOCKET Socket Options&lt;/a&gt;&amp;nbsp;and the&amp;nbsp;&lt;strong&gt;linger&lt;/strong&gt;&amp;nbsp;structure.&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span  style="font-family: 'Segoe UI', Verdana, Arial; font-size: 13px; line-height: normal; "&gt;One technique that can be used to minimize the chance of problems occurring during connection teardown is to avoid relying on an implicit shutdown being initiated by&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms737582(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;closesocket&lt;/strong&gt;&lt;/a&gt;. Instead, use one of the two explicit shutdown functions,&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms740481(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;shutdown&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms741691(v=vs.85).aspx" style="color: #1364c4; text-decoration: none; "&gt;&lt;strong xmlns="http://www.w3.org/1999/xhtml"&gt;WSASendDisconnect&lt;/strong&gt;&lt;/a&gt;. This in turn causes an FD_CLOSE indication to be received by the peer application indicating that all pending data has been received. To illustrate this, the following table shows the functions that would be invoked by the client and server components of an application, where the client is responsible for initiating a graceful shutdown.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2027048.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/04/25/Graceful_Socket_Closure.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/04/25/Diagnostic_utilities_TCP_IP.html</id><title type="text">Diagnostic utilities: TCP/IP</title><summary type="text">Arp,Hostname,Ipconfig,Lpq,Nbtstat,Netsh,Netstat,Nslookup,Ping,Route,Tracert,Pathping,</summary><published>2011-04-25T03:04:00Z</published><updated>2011-04-25T03:04:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/04/25/Diagnostic_utilities_TCP_IP.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/04/25/Diagnostic_utilities_TCP_IP.html"/><content type="html">&lt;div&gt;&lt;span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; line-height: normal; "&gt;&#xD;
&lt;table style="border-collapse: collapse; width: 919px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #dddddd; border-right-color: #dddddd; border-bottom-color: #dddddd; border-left-color: #dddddd; font-size: 11px; margin-bottom: 5px; margin-left: 5px; margin-top: 5px; margin-right: 10px; "&gt;&#xD;
     &lt;tbody&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;th colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #cccccc; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #c8cdde; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: bottom; color: #000066; background-position: initial initial; background-repeat: initial initial; width:80px;"&gt;Utility&lt;/th&gt;&lt;th colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #cccccc; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #c8cdde; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: bottom; color: #000066; background-position: initial initial; background-repeat: initial initial; "&gt;Description&lt;/th&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-color: #ffffff; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Arp&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Allows viewing and editing of the Address Resolution Protocol (ARP) cache. The ARP cache contains software-to-hardware address mappings that are used for sending data on the local network. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl01" href="http://technet.microsoft.com/en-us/library/cc755489(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Arp&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Hostname&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Displays the host name of the computer as used for authentication by the Rcp, Rsh, and Rexec utilities. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl02" href="http://technet.microsoft.com/en-us/library/cc755862(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Hostname&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Ipconfig&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Displays current TCP/IP configuration values. Also used to manually release and renew a TCP/IP configuration lease assigned by a DHCP server and to reset DNS name registrations. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl03" href="http://technet.microsoft.com/en-us/library/cc755772(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Ipconfig&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl04" href="http://technet.microsoft.com/en-us/library/cc757819(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Command-line utilities&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Lpq&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Displays print queue status information on computers running Line Printer Daemon (LPD) print server software. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl05" href="http://technet.microsoft.com/en-us/library/cc772984(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Lpq&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Nbtstat&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Checks the state of current NetBIOS over TCP/IP connections, updates the Lmhosts cache, and determines the registered names and scope ID. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl06" href="http://technet.microsoft.com/en-us/library/cc755486(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Nbtstat&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Netsh&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Displays and administers TCP/IP protocol settings on either the local computer or a remote computer. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl07" href="http://technet.microsoft.com/en-us/library/cc738592(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Netsh commands for Interface IP&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Netstat&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Displays protocol statistics and information on current TCP/IP connections. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl08" href="http://technet.microsoft.com/en-us/library/cc755702(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Netstat&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Nslookup&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Checks records, domain host aliases, domain host services, and operating system information by querying DNS server. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl09" href="http://technet.microsoft.com/en-us/library/cc756097(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Nslookup&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl10" href="http://technet.microsoft.com/en-us/library/cc738991(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Verify DNS registration for domain controllers using the nslookup command&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Ping&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Verifies whether TCP/IP is configured correctly and tests connectivity to other host systems. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl11" href="http://technet.microsoft.com/en-us/library/cc773052(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Ping&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl12" href="http://technet.microsoft.com/en-us/library/cc739390(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Test a TCP/IP configuration by using the ping command&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Route&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Allows viewing and editing of the local IP routing table. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl13" href="http://technet.microsoft.com/en-us/library/cc756169(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Route&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Tracert&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Traces the network route taken by an IP datagram to its destination. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl14" href="http://technet.microsoft.com/en-us/library/cc755985(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Tracert&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl15" href="http://technet.microsoft.com/en-us/library/cc782791(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Trace a path by using the tracert command&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
         &lt;tr style="vertical-align: top; "&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Pathping&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
             &lt;td colspan="1" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #ffffff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #d5d5d3; border-bottom-color: #cccccc; border-left-color: #cccccc; font-family: Verdana; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; vertical-align: top; margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; overflow-x: auto; overflow-y: auto; background-position: initial initial; background-repeat: initial initial; "&gt;&#xD;
             &lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; "&gt;Traces the route a packet takes to a destination and displays information on packet losses for each router in the path. Pathping can also be used to troubleshoot Quality of Service (QoS) connectivity. For more information, see&amp;nbsp;&lt;a id="ctl00_MTCS_main_ctl16" href="http://technet.microsoft.com/en-us/library/cc787365(WS.10).aspx" style="text-decoration: none; color: #0033cc; "&gt;Using the pathping command&lt;/a&gt;.&lt;/p&gt;&#xD;
             &lt;/td&gt;&#xD;
         &lt;/tr&gt;&#xD;
     &lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/2026843.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/04/25/Diagnostic_utilities_TCP_IP.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/03/11/photon_vocabulary.html</id><title type="text">Photon Socket 术语表</title><summary type="text">Photon是exitgames开发的MMO服务器端引擎。这里将介绍Photon开发中经常遇到的一些术语，它们可能是一些概念，或重要的类。</summary><published>2011-03-11T08:02:00Z</published><updated>2011-03-11T08:02:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/03/11/photon_vocabulary.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/03/11/photon_vocabulary.html"/><content type="html">&lt;style&gt;&#xD;
    #cnblogs_post_body dt&#xD;
    {&#xD;
        font-size: 18px;&#xD;
        font-weight: 900;&#xD;
        color: #000;&#xD;
        margin: 10px 0 10px 0;&#xD;
    }&#xD;
    #cnblogs_post_body dd&#xD;
    {&#xD;
        font-size: 14px;&#xD;
        color: #222;&#xD;
        text-indent: 20px;&#xD;
    }&#xD;
&lt;/style&gt;&#xD;
&lt;dl&gt;&#xD;
    &lt;dt&gt;Photon概述&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        Photon是一个开发框架，用来构建实时MMO游戏，并支持多个平台。如同我们在&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/02/27/photon_in_brief.html"&gt;Photon&#xD;
            Socket 简介&lt;/a&gt;里介绍的一样，它包含一个Server SDK和一个Client SDK。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        Photon提供一个低延时的通讯层，会根据需求选择TCP或UDP，来分别通过"可靠传输"和"非可靠传输"的方式发送"命令"。这些术语在本文都会有详细的解释。但在开始的时候，我希望大家明白，Photon是一个基于"操作"和"事件"的框架。这么做的目的是为了简化开发游戏系统的代价。这个系列的后续文章里我们会通过一系列例子来说明这点。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        在服务器端，每一个独立的程序都被称作"线应用"(Lite Application)。它们内置了一些基础的"操作"，以使开发人员更关注他们的业务逻辑而非底层实现。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        下面我们就开始介绍这些在开发中经常会使用术语或类。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;Class LitePeer&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        我们从下面这个客户端的工作流开始，介绍一个最常见的Photon的运行步骤。大家可以大概理解一个服务器端程序是如何建立"房间"(Room)并且让用户"加入"(Join)进去。在"房间"中每一个用户都是一个"活动者"(Actor)，并有一个房间内唯一的标记。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;创建一个LitePeer类的实例对象，并准备在下面步骤中调用该对象的方法&lt;/li&gt;&#xD;
            &lt;li&gt;调用Connect()方法来尝试连接服务器，并通过实现IPhotonPeerListener.PeerStatusCallback来得到连接状态的通知，成功的状态是StatusCode.Connect。&lt;/li&gt;&#xD;
            &lt;li&gt;周期性的调用Service()方法来获取事件，同时发送"命令"(比如每秒十次)&lt;/li&gt;&#xD;
            &lt;li&gt;调用OpJoin()来加入游戏，通过实现OperationResult()来得到连接状态的通知，成功的状态是LiteOpCode.Join&lt;/li&gt;&#xD;
            &lt;li&gt;调用OpRaiseEvent()向服务器发送数据&lt;/li&gt;&#xD;
            &lt;li&gt;通过实现IPhotonPeerListener.EventAction()来获取服务器的数据更新&lt;/li&gt;&#xD;
            &lt;li&gt;调用LitePeer.OpLeave()离开游戏，若OperationResult()返回LiteOpCode.Leave则表示服务器端已经确认成功离开。&lt;/li&gt;&#xD;
            &lt;li&gt;调用Disconnect()以断开连接，通过PeerStatusCallback()得到连接状态的通知，StatusCode.Disconnect为成功断开连接。&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        通过上述流程，我们可以发现，这些已经介绍到的方法可以分为以下三类:&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;异步操作:&lt;/strong&gt;比如Connect()，OpJoin()，OpRaiseEvent()，OpLeave()&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;异步回调:&lt;/strong&gt;比如OperationResult()，用来返回异步主动操作的结果。&lt;strong&gt;值得注意的是，这种返回一般和异步操作是以一问一答的形式出现的。&lt;/strong&gt;&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;事件:&lt;/strong&gt;不确定合适会被触发，比如PeerStatusCallback()。&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;通讯层(Level)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        PhotonServer SDK和Client SDK之间的通讯可以分为三个通讯层。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;通讯层:&lt;/strong&gt;Service, Connect, Disconnect 还有 StatusCallback这些都是直接对应 连接状态的。它们和UDP/TCP协议都一一对应。&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;逻辑层:&lt;/strong&gt;内置的"操作"，"状态"和"事件"都算作是逻辑层的一部分，我们可以通过方法的名称把它们分辨出来，比如OpJoin，OperationResult，PeerStatusCallback。&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;应用层:&lt;/strong&gt;我们自己游戏中的业务逻辑一般被列在这个层中。比如我们可以通过实现OpCustom()，来发送自定义的"操作"。&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        大部分情况下，我们不必控制通讯层。然而了解客户端和服务器端的通讯机制依然有意义。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;Interface IPhotonPeerListener&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        IPhotonPeerListener被定义来接受服务器端事件,下列方法需要被实现。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;PeerStatusCallback:&lt;/strong&gt;用来得到通讯层的连接状态变化的通知，比如connect, disconnect, errors, compare，这些状态都被定义在StatusCode这个枚举里。&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;OperationResult:&lt;/strong&gt;用来得到逻辑层操作的回调，比如(join, leave)&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;EventAction:&lt;/strong&gt;用来得到应用层的事件回调&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;DebugReturn:&lt;/strong&gt;只在调试中使用&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        同时下列属性也值得关注&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;TimePingInterval:&lt;/strong&gt;设置客户端对服务器的Ping间隔&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;RoundTripTime:&lt;/strong&gt;用来指定"可靠信道"的往返间隔。可以简单理解为，在"可靠信道"里发送数据包的时候，依靠RoundTripTime和RoundTripTimeVariance来判断单位时间内响应是否超时。&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;RoundTripTimeVariance:&lt;/strong&gt;RoundTripTime允许的方差。&lt;/li&gt;&#xD;
            &lt;li&gt;&lt;strong&gt;ServerTimeInMilliSeconds:&lt;/strong&gt;服务器端的计时器，以微秒为单位。&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;操作(Operation)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        操作是我们用来描述对Photon服务器远程方法调用(RPC)的术语。也就是说，操作是在服务器端被实现，然而在客户端被调用。就像所有的方法，他们有参数和返回值。Photon负责处理操作的调用机制，而我们只需要定义和调用即可。&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        在服务器端，操作运行于Photon内核之上。默认由Exit Games(Photon开发公司)提供的服务器端程序叫做线应用(Lite Application)。LitePeer类继承自PhotonPeer并实现了所有被继承的基础操作的方法。&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        关于这些基础操作，最典型的例子就是join和raise event。在客户端，这两个操作对应的就是LitePeer类的OpJoin和OpRaiseEvent这两个方法。由于他们已经被LitePeer实现了，所以在应用层你可以放心来调用。&lt;/dd&gt;&#xD;
    &lt;dt&gt;自定义操作(Custom Operation)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        Photon是可拓展的。比如游戏程序中，你可能需要在服务器端持久化游戏世界的某些状态，也需要在客户端确认这些信息是否同步。所以你需要自己实现一些业务逻辑，所有这些没有被内置实现的操作都叫做自定义操作。实现这些操作一般都是服务器端程序员的工作，而调用这些远程方法及更新客户端则是客户端程序员的工作。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        在定义自定义操作的时候，名字和参数数目是不受限制的，但为了节省带宽，这些操作名和参数是会被二进制化成字节码。事实上，Photon会用一个唯一的code标识每一个操作，这个code就被称为操作码(opCode)。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        在调用自定义操作就是在客户端调用OpCustom()，Photon发送一个哈希表的数据结构来调用远程方法。&lt;/dd&gt;&#xD;
    &lt;dt&gt;事件(Event)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        不像操作是主动调用的方法，事件是通过暴露回调方法来得到通知。事件可能是由服务器端或者其他客户端发出的。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        一般来说，得到事件的通知是由于受到操作的影响，比如你进入一个游戏房间，这个房间里的其他客户端应该得到通知。当然有自定义操作就有自定义事件。大部分事件带有关于这个事件的描述数据，这也是用哈希表来作为数据结构的。&lt;/dd&gt;&#xD;
    &lt;dt&gt;段(Fragmentation)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        超过1KB的数据都会被拆成以1KB为单位的消息包，并且会在传输到对点之后自动重组。这就意味着有些包含很大数据量的命令会导致其后的命令延时。所以经常调用Service()&#xD;
        或 SendOutgoingCommands()是绝对必要的。你可以检查PhotonPeer.QueuedOutgoingCommands这个属性是否归零来了解是否队列里的命令是否都发出去了。你也可以检查debug输出里的是否有"UDP&#xD;
        package is full",这有时候是会发生的。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;非可信数据(Unreliable data)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        有些数据需要保证其实时，然而对其准确性和丢失率并无很高要求，这类数据被称为非可信数据。有些数据要求务必准确，并且需要保证发送的顺序即接收的顺序，这类数据被称为可信数据。事实上，可信数据一般基于TCP协议，而非可信数据基于UDP协议。当然，TCP的通讯效率明显低于UDP，而且是单播的，UDP却可以组播。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        在游戏程序中，我们可以根据需求来使用这两种传输方式。比如在FPS游戏中，移动信息可以作为非可信数据，因为其要频繁更新，并且可以接受一定的误差因为可以很快被之后的消息更正，而对话信息则必须是可信数据，因为顺序错误或者消息丢失是不能被接受的。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;信道(Channels)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        .net的客户端已经支持多信道。这个特性允许客户端和服务器之间可以并行传输消息。这就意味，如果我们把某些特别容易造成延时的命令或事件放在一个独立的信道里，它就不会导致那些有实时性要求的数据等待太久。当然你不可以跨信道发送事件。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        默认情况下，每一个PhotonPeer对象实例有两条信道，并且0号信道是默认用来发送操作的信道。而如加入房间或离开房间则是通过2号信道发送的，这么做是为了让业务更清楚。在这两条以外其实还有一条后台信道，即255号信道，用来发送网络连接和断开的消息，这样我们就可以把主动断开网络和意外性的断开网络封装成一种情况。&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        信道也是分优先级的，低号码的信道会被放在UDP协议来优先发送。举例来说，对话消息可能会被放在1号信道，而移动消息则被放到0号信道。那么当聊天信息发送延时的时候，不会导致实时性要求更高的移动消息被阻塞。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;TCP&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        如Flash或Silverlight的客户端是不支持的UDP协议的，这就意味着我们只能把TCP协议作为最底层协议。这虽然不是使用Photon的最佳实践，但也只能如此。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        而在TCP协议下，我们无法使用非可信数据的传输效率高和组播这样的特性。当然，我们的业务代码也可以简化很多。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;可序列化数据类型(Serializable Datatypes)&lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        从服务器SDK 1.8.0和.net客户端5.6.0开始，Photon支持的可序列化数据类型有了一次大的变化。ArrayList(弱类型数组)被放弃，而Arrays(强类型数组)和Hashtable被支持。具体可以参考以下列表:&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;String / string&lt;/li&gt;&#xD;
            &lt;li&gt;Boolean / bool&lt;/li&gt;&#xD;
            &lt;li&gt;Byte / byte (unsigned)&lt;/li&gt;&#xD;
            &lt;li&gt;Int16 / short (signed)&lt;/li&gt;&#xD;
            &lt;li&gt;Int32 / int (signed)&lt;/li&gt;&#xD;
            &lt;li&gt;Int64 / long&lt;/li&gt;&#xD;
            &lt;li&gt;Single / float&lt;/li&gt;&#xD;
            &lt;li&gt;Double / double&lt;/li&gt;&#xD;
            &lt;li&gt;Array (支持以上类型的强类型数组, 但长度限于 Short.MaxValue，而且二位数组是不被支持的。 )&lt;/li&gt;&#xD;
            &lt;li&gt;Hashtable (需注意的是Hashtable[] 是不被支持的。对一个Hashtable对象，虽然可以同时使用不同类型的数值作为它的键，但从传输性能上考虑，最好不要出现这种情况。因为一旦出现一个Hashtable的键有多个类型的情况，该对象的读取会被拆成多个子命令，每一个键都会需要一个子命令。)&#xD;
            &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dt&gt;组播属性(broadcasting Property) &lt;/dt&gt;&#xD;
    &lt;dd&gt;&#xD;
        线应用可以用来在服务器端为客户端维护数据一致性，在同一个房间的玩家需要将彼此的数据同步，而对客户端而言，整个过程也许就像是读写对象的属性一样。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        通过Photon内置的组播选项可以轻松的实现组播属性的功能。在服务器端的属性发生改变时，响应的事件会被触发以通知所有需要被通知的玩家更新数据，除了属性的修改者(因为这是不需要的)。&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        下列方法就是用来将属性写回服务器端:&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;LitePeer.OpSetPropertiesOfActor&lt;/li&gt;&#xD;
            &lt;li&gt;LitePeer.OpSetPropertiesOfGame&lt;/li&gt;&#xD;
            &lt;li&gt;LitePeer.OpJoin(值得一提的是，玩家可以加入一个还没有被创建出来的游戏房价，也就是说，服务器端不会对加入的房间做检查，你需要自己来完成)&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        而下列方法用来从服务器端读取属性并缓存在客户端本地:&lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        &lt;ul&gt;&#xD;
            &lt;li&gt;OpGetPropertiesOfActor&lt;/li&gt;&#xD;
            &lt;li&gt;OpGetPropertiesOfGame&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
    &lt;/dd&gt;&#xD;
    &lt;dd&gt;&#xD;
        需要注意的是，线应用目前不支持删除属性，也不支持用含宽字符的字符串作为组播属性的键值。而属性方法(.net中可以把方法包装成属性)也暂时不被支持。&#xD;
    &lt;/dd&gt;&#xD;
&lt;/dl&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/1981523.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/03/11/photon_vocabulary.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/huazhihao/archive/2011/02/27/photon_in_brief.html</id><title type="text">Photon Socket 简介</title><summary type="text">Photon是exitgames开发的MMO服务器端引擎。它的client SDK支持包括android, Flash, iPhone, iPad, .NET., Unity 3D, Windows,甚至silverlight的大部分客户端平台。</summary><published>2011-02-26T19:46:00Z</published><updated>2011-02-26T19:46:00Z</updated><author><name>华志昊</name><uri>http://www.cnblogs.com/huazhihao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/huazhihao/archive/2011/02/27/photon_in_brief.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/huazhihao/archive/2011/02/27/photon_in_brief.html"/><content type="html">&lt;style&gt;&#xD;
#cnblogs_post_body dt&#xD;
{&#xD;
font-size: 18px;&#xD;
font-weight: 900;&#xD;
color: #000;&#xD;
margin:10px 0 10px 0;&#xD;
}&#xD;
#cnblogs_post_body dd&#xD;
{&#xD;
font-size: 14px;&#xD;
color: #222;&#xD;
text-indent: 20px;&#xD;
}&#xD;
&lt;/style&gt;&#xD;
&lt;dl&gt;&#xD;
&lt;dt&gt;Photon 是什么 &lt;/dt&gt;&#xD;
&lt;dd&gt;&#xD;
Photon原意是指光量子。在这里是指&lt;a href="http://exitgames.com/"&gt;exitgames&lt;/a&gt;开发的MMO服务器端引擎。&#xD;
&lt;/dd&gt;&#xD;
&lt;dd&gt;&#xD;
Photon包含两个部分。一部分是一个socket服务器，另一部分是其针对各个平台编写的sdk。这些平台包括了:android, Flash, iPhone,&#xD;
iPad, .NET., Unity 3D, Windows,甚至还有silverlight。这也意味着Photon的发布也包括两个部分，Client SDK&#xD;
Release和Server SDK Update。 目前Server SDK的版本是v2.4.5，而Client SDK的版本是v6.2.0。&#xD;
&lt;/dd&gt;&#xD;
&lt;dt&gt;Photon 和其他MMO服务器端引擎有什么不同 &lt;/dt&gt;&#xD;
&lt;dd&gt;&#xD;
这里有一幅图可以供大家参考。&#xD;
&lt;/dd&gt;&#xD;
&lt;dd&gt;&#xD;
&lt;img src="http://images.cnblogs.com/cnblogs_com/huazhihao/photoncomparison.jpg" border="0" alt="" width="310" height="149" /&gt;&#xD;
&lt;/dd&gt;&#xD;
&lt;dd&gt;&#xD;
当然还有几处是值得一提的：&#xD;
&lt;ol&gt;&#xD;
     &lt;li&gt;Photon的API已经不限于C#了。&lt;/li&gt;&#xD;
     &lt;li&gt;Photon可以支持HTTP，则意味着它或许还可以作为其他用途，比方说专用的Ajax服务器。&lt;/li&gt;&#xD;
     &lt;li&gt;Photon的socket server是用c++实现的，效率自然不是java可以比拟的。&lt;/li&gt;&#xD;
     &lt;li&gt;Photon已经通过私有协议完成对象的二进制序列化。大家也不必操心去笨手笨脚的自己去实现了。&lt;/li&gt;&#xD;
     &lt;li&gt;Photon支持UDP。对于某些需求来说，这就具备了技术上的可行性了。&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;/dd&gt;&#xD;
&lt;dt&gt;Photon 的实际应用 &lt;/dt&gt;&#xD;
&lt;dd&gt;&#xD;
事实上Photon和Unity3d之间的合作是有战略意义的。了解Unity3d的朋友一定知道island这个sample。这里有一段视频就是展示如何在Unity3d中使用Photon&#xD;
Client SDK。不得不说，Photon和Unity3d的风格很接近:支持广泛，效率良好，易于上手。&#xD;
&lt;/dd&gt;&lt;dd&gt;&lt;embed src='http://player.youku.com/player.php/sid/XMjQ2ODM5MTQw/v.swf' quality='high' width='480' height='400' align='center' allowScriptAccess='sameDomain' type='application/x-shockwave-flash'&gt;&lt;/embed&gt;&#xD;
&lt;/dd&gt;&#xD;
&lt;dt&gt;Photon 的更多内容 &lt;/dt&gt;&#xD;
&lt;dd&gt;&#xD;
以后会一一道来。当然欢迎大家来此群26981338讨论。&lt;/dd&gt;&#xD;
&lt;/dl&gt;&lt;img src="http://www.cnblogs.com/huazhihao/aggbug/1966107.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/huazhihao/archive/2011/02/27/photon_in_brief.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
