﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/css" href="/style/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>FSherp RSS</title>
    <link>http://qianxun.net</link>
    <description>FSherp聚合资料</description>
    <generator>RainbowSoft Studio Z-Blog 1.6 Final Build 60816</generator>
    <language>zh-CN</language>
    <copyright>Copyright 2008 FSherp.cn Some Rights Reserved.</copyright>
    <pubDate>Sat, 31 Jul 2010 04:59:56 GMT</pubDate>
    <lastBuildDate>Sat, 31 Jul 2010 04:59:56 GMT</lastBuildDate>
    <item>
      <title>120个非常优秀的CSS水平导航菜单</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4690.shtml</link>
      <pubDate>13 Jul 2010 19:24:23</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4690.shtml</guid>
      <description><![CDATA[<div><p>导航是一个网站的路标，优秀的导航是网站设计成功地第一步。导航必须是用户友好的，而且要与网站设计风格保持一致，这样才能为用户提供简便的导航。</p><p>在这里您将看到120个非常优秀的CSS水平导航菜单。</p><p><a title="2pitch.com" href="http://www.2pitch.com/" target="_blank"><img title="2pitch" alt="2pitch" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/2pitch.jpg" /></a><br /><br /><a title="13creative.com" href="http://www.13creative.com/" target="_blank"><img title="13creative" alt="13creative" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/13creative.jpg" /></a></p><p><a title="ainsworthstudio.com" href="http://www.ainsworthstudio.com/" target="_blank"><img title="ainsworthstudio" alt="ainsworthstudio" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ainsworthstudio.jpg" /></a></p><p><a title="blog.andreaugusto.com.br" href="http://blog.andreaugusto.com.br/" target="_blank"><img title="andreaugusto" alt="andreaugusto" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/andreaugusto.jpg" /></a></p><p><a title="ashwebstudio.com" href="http://www.ashwebstudio.com/" target="_blank"><img title="ashwebstudio" alt="ashwebstudio" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ashwebstudio.jpg" /></a></p><p><a title="benjaminchristie.com" href="http://www.benjaminchristie.com/" target="_blank"><img title="benjaminchristie" alt="benjaminchristie" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/benjaminchristie.jpg" /></a></p><p><a title="biteclub.com" href="http://www.biteclub.com/bc/index.cfm" target="_blank"><img title="biteclub" alt="biteclub" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/biteclub.jpg" /></a></p><p><a title="bondmakeover.com" href="http://www.bondmakeover.com/blog.php" target="_blank"><img title="bondmakeover" alt="bondmakeover" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/bondmakeover.jpg" /></a></p><p><a title="boomawebdesign.com" href="http://www.boomawebdesign.com/" target="_blank"><img title="boomawebdesign" alt="boomawebdesign" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/boomawebdesign.jpg" /></a></p><p><a title="jakeboyles.com" href="http://www.jakeboyles.com/" target="_blank"><img title="jakeboyles" alt="jakeboyles" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/boyleswebdesign.jpg" /></a></p><p><a title="brianyerkes.com" href="http://www.brianyerkes.com/" target="_blank"><img title="brianyerkes" alt="brianyerkes" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/brianyerkes.jpg" /></a></p><p><a title="brookechase.com" href="http://www.brookechase.com/" target="_blank"><img title="brookechase" alt="brookechase" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/brookechase.jpg" /></a></p><p><a title="caffedigital.com.br" href="http://www.caffedigital.com.br/" target="_blank"><img title="caffedigital" alt="caffedigital" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/caffedigital.jpg" /></a></p><p><a title="capitalcityequipmentcompany.com" href="http://www.capitalcityequipmentcompany.com/" target="_blank"><img title="capitalcityequipmentcompany" alt="capitalcityequipmentcompany" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/capitalcityequipmentcompany.jpg" /></a></p><p><a title="cidadessemfome.org" href="http://cidadessemfome.org/en/" target="_blank"><img title="cidadessemfome" alt="cidadessemfome" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/cidadessemfome.jpg" /></a></p><p><a title="culturedcode.com" href="http://www.culturedcode.com/" target="_blank"><img title="culturedcode" alt="culturedcode" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/culturedcode.jpg" /></a></p><p><a title="dailycandy.com" href="http://www.dailycandy.com/london/" target="_blank"><img title="dailycandy" alt="dailycandy" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/dailycandy.jpg" /></a></p><p><a title="dairien.com" href="http://dairien.com/" target="_blank"><img title="dairien" alt="dairien" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/dairien.jpg" /></a></p><p><a title="darasgarden.com" href="http://www.darasgarden.com/" target="_blank"><img title="darasgarden" alt="darasgarden" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/darasgarden.jpg" /></a></p><p><a title="davidesavelli.it" href="http://www.davidesavelli.it/" target="_blank"><img title="davidesavelli" alt="davidesavelli" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/davidesavelli.jpg" /></a></p><p><a title="davidhellmann.com" href="http://www.davidhellmann.com/" target="_blank"><img title="davidhellmann" alt="davidhellmann" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/davidhellmann.jpg" /></a></p><p><a title="deborahcavenaugh.com" href="http://deborahcavenaugh.com/" target="_blank"><img title="deborahcavenaugh" alt="deborahcavenaugh" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/deborahcavenaugh.jpg" /></a></p><p><a title="designicide.com" href="http://www.designicide.com/" target="_blank"><img title="designicide" alt="designicide" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/designicide.jpg" /></a></p><p><a title="designreviver.com" href="http://designreviver.com/" target="_blank"><img title="designreviver" alt="designreviver" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/designreviver.jpg" /></a></p><p><a title="downsyndromecentre.ie" href="http://www.downsyndromecentre.ie/" target="_blank"><img title="downsyndromecentre" alt="downsyndromecentre" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/downsyndromecentre.jpg" /></a></p><p><a title="earlyinterventionsupport.com" href="http://www.earlyinterventionsupport.com/" target="_blank"><img title="earlyinterventionsupport" alt="earlyinterventionsupport" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/earlyinterventionsupport.jpg" /></a></p><p><a title="edgepointchurch.com" href="http://www.edgepointchurch.com/" target="_blank"><img title="edgepointchurch" alt="edgepointchurch" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/edgepointchurch.jpg" /></a></p><p><a title="escapecrate.co.uk" href="http://www.escapecrate.co.uk/" target="_blank"><img title="escapecrate" alt="escapecrate" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/escapecrate.jpg" /></a></p><p><a title="etondigital.com" href="http://www.etondigital.com/" target="_blank"><img title="etondigital" alt="etondigital" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/etondigital.jpg" /></a></p><p><a title="favoritethings.net" href="http://www.favoritethings.net/" target="_blank"><img title="favoritethings" alt="favoritethings" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/favoritethings.jpg" /></a></p><p><a title="federicacau.com" href="http://www.federicacau.com/" target="_blank"><img title="federicacau" alt="federicacau" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/federicacau.jpg" /></a></p><p><a title="fiskarettes.co.uk" href="http://www.fiskarettes.co.uk/index.php" target="_blank"><img title="fiskarettes" alt="fiskarettes" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/fiskarettes.jpg" /></a></p><p><a title="flexycon.com" href="http://www.flexycon.com/" target="_blank"><img title="flexycon" alt="flexycon" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/flexycon.jpg" /></a></p><p><a title="fritula.hr" href="http://www.fritula.hr/" target="_blank"><img title="fritula" alt="fritula" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/fritula.jpg" /></a></p><p><a title="uzecreative.com" href="http://www.fuzecreative.com/" target="_blank"><img title="fuzecreative" alt="fuzecreative" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/fuzecreative.jpg" /></a></p><p><a title="ganato.com" href="http://www.ganato.com/" target="_blank"><img title="ganato" alt="ganato" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ganato.jpg" /></a></p><p><a title="getmefast.com" href="http://www.getmefast.com/" target="_blank"><img title="getmefast" alt="getmefast" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/getmefast.jpg" /></a></p><p><a title="getraenke-kukral.de" href="http://www.getraenke-kukral.de/" target="_blank"><img title="getraenke-kukral" alt="getraenke-kukral" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/getraenke-kukral.jpg" /></a></p><p><a title="gpacheco.fr" href="http://www.gpacheco.fr/" target="_blank"><img title="gpacheco" alt="gpacheco" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/gpacheco.jpg" /></a></p><p><a title="hellamusic.co.uk" href="http://www.hellamusic.co.uk/" target="_blank"><img title="hellamusic" alt="hellamusic" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/hellamusic.jpg" /></a></p><p><a title="helpmerent.net" href="http://www.helpmerent.net/" target="_blank"><img title="helpmerent" alt="helpmerent" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/helpmerent.jpg" /></a></p><p><a title="idioticadventures.com" href="http://www.idioticadventures.com/" target="_blank"><img title="idioticadventures" alt="idioticadventures" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/idioticadventures.jpg" /></a></p><p><a title="iemai.com.br" href="http://iemai.com.br/blog/" target="_blank"><img title="iemai" alt="iemai" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/iemai.jpg" /></a></p><p><a title="imenestrelli.it" href="http://www.imenestrelli.it/" target="_blank"><img title="imenestrelli" alt="imenestrelli" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/imenestrelli.jpg" /></a></p><p><a title="ispoil.net" href="http://www.ispoil.net/" target="_blank"><img title="ispoil" alt="ispoil" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ispoil.jpg" /></a></p><p><a title="jayhafling.com" href="http://www.jayhafling.com/" target="_blank"><img title="jayhafling" alt="jayhafling" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/jayhafling.jpg" /></a></p><p><a title="jensensliquors.com" href="http://www.jensensliquors.com/" target="_blank"><img title="jensensliquors" alt="jensensliquors" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/jensensliquors.jpg" /></a></p><p><a title="jeremygraston.com" href="http://www.jeremygraston.com/" target="_blank"><img title="jeremygraston" alt="jeremygraston" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/jeremygraston.jpg" /></a></p><p><a title="jimmyoh.com" href="http://www.jimmyoh.com/" target="_blank"><img title="jimmyoh" alt="jimmyoh" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/jimmyoh.jpg" /></a></p><p><a title="kareo.com" href="http://www.kareo.com/" target="_blank"><img title="kareo" alt="kareo" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/kareo.jpg" /></a></p><p><a title="karlhapcicmd.com" href="http://www.karlhapcicmd.com/" target="_blank"><img title="karlhapcicmd" alt="karlhapcicmd" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/karlhapcicmd.jpg" /></a></p><p><a title="kevadamson.com" href="http://www.kevadamson.com/" target="_blank"><img title="kevadamson" alt="kevadamson" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/kevadamson.jpg" /></a></p><p><a title="kjbates.com" href="http://www.kjbates.com/" target="_blank"><img title="kjbates" alt="kjbates" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/kjbates.jpg" /></a></p><p><a title="kkmedia.org" href="http://www.kkmedia.org/" target="_blank"><img title="kkmedia" alt="kkmedia" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/kkmedia.jpg" /></a></p><p><a title="kudayta.com" href="http://www.kudayta.com/" target="_blank"><img title="kudayta" alt="kudayta" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/kudayta.jpg" /></a></p><p><a title="le-moulin-de-sauvage.com" href="http://www.le-moulin-de-sauvage.com/" target="_blank"><img title="le-moulin-de-sauvage" alt="le-moulin-de-sauvage" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/le-moulin-de-sauvage.jpg" /></a></p><p><a title="longcoat-chihuahuas.com" href="http://www.longcoat-chihuahuas.com/" target="_blank"><img title="longcoat-chihuahuas" alt="longcoat-chihuahuas" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/longcoat-chihuahuas.jpg" /></a></p><p><a title="ma.tt" href="http://ma.tt/" target="_blank"><img title="ma" alt="ma" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ma.jpg" /></a></p><p><a title="mattdempsey.com" href="http://www.mattdempsey.com/" target="_blank"><img title="mattdempsey" alt="mattdempsey" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/mattdempsey.jpg" /></a></p><p><a title="maxandlous.com" href="http://www.maxandlous.com/" target="_blank"><img title="maxandlous" alt="maxandlous" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/maxandlous.jpg" /></a></p><p><a title="mayflowerbrewing.com" href="http://www.mayflowerbrewing.com/" target="_blank"><img title="mayflowerbrewing" alt="mayflowerbrewing" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/mayflowerbrewing.jpg" /></a></p><p><a title="mediatemprano.com" href="http://www.mediatemprano.com/" target="_blank"><img title="mediatemprano" alt="mediatemprano" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/mediatemprano.jpg" /></a></p><p><a title="megavirada.com" href="http://megavirada.com/" target="_blank"><img title="megavirada" alt="megavirada" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/megavirada.jpg" /></a></p><p><a title="milesdowsett.com" href="http://milesdowsett.com/" target="_blank"><img title="milesdowsett" alt="milesdowsett" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/milesdowsett.jpg" /></a></p><p><a title="morganenterprise.ro" href="http://www.morganenterprise.ro/" target="_blank"><img title="morganenterprise" alt="morganenterprise" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/morganenterprise.jpg" /></a></p><p><a title="mydezzign.com" href="http://www.mydezzign.com/" target="_blank"><img title="mydezzign" alt="mydezzign" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/mydezzign.jpg" /></a></p><p><a title="http://www.my-igloo.net/" href="http://www.my-igloo.net/" target="_blank"><img title="my-igloo" alt="my-igloo" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/my-igloo.jpg" /></a></p><p><a title="navigantconsulting.com" href="http://www.navigantconsulting.com/" target="_blank"><img title="navigantconsulting" alt="navigantconsulting" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/navigantconsulting.jpg" /></a></p><p><a title="neubreed.com.au" href="http://www.neubreed.com.au/" target="_blank"><img title="neubreed" alt="neubreed" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/neubreed.jpg" /></a></p><p><a title="nice-design.co.uk" href="http://nice-design.co.uk/" target="_blank"><img title="nice-design" alt="nice-design" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/nice-design.jpg" /></a></p><p><a title="noizikidz.com" href="http://www.noizikidz.com/" target="_blank"><img title="noizikidz" alt="noizikidz" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/noizikidz.jpg" /></a></p><p><a title="nue-media.com" href="http://www.nue-media.com/" target="_blank"><img title="nue-media" alt="nue-media" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/nue-media.jpg" /></a></p><p><a title="ourmemoryof.com" href="http://ourmemoryof.com/" target="_blank"><img title="ourmemoryof" alt="ourmemoryof" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ourmemoryof.jpg" /></a></p><p><a title="paiko.de" href="http://paiko.de/" target="_blank"><img title="paiko" alt="paiko" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/paiko.jpg" /></a></p><p><a title="petrillidmd.com" href="http://www.petrillidmd.com/" target="_blank"><img title="petrillidmd" alt="petrillidmd" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/petrillidmd.jpg" /></a></p><p><a title="pixel-house.com.au" href="http://www.pixel-house.com.au/" target="_blank"><img title="pixel-house" alt="pixel-house" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/pixel-house.jpg" /></a></p><p><a title="li.pixelmind.net" href="http://li.pixelmind.net/" target="_blank"><img title="pixelmind" alt="pixelmind" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/pixelmind.jpg" /></a></p><p><a title="plankdesign.com" href="http://www.plankdesign.com/en/" target="_blank"><img title="plankdesign" alt="plankdesign" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/plankdesign.jpg" /></a></p><p><a title="porterscarpetandfurniture.com" href="http://www.porterscarpetandfurniture.com/" target="_blank"><img title="porterscarpetandfurniture" alt="porterscarpetandfurniture" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/porterscarpetandfurniture.jpg" /></a></p><p><a title="recyclenow.com" href="http://www.recyclenow.com/" target="_blank"><img title="recyclenow" alt="recyclenow" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/recyclenow.jpg" /></a></p><p><a title="regines.net.au" href="http://www.regines.net.au/" target="_blank"><img title="regines" alt="regines" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/regines.jpg" /></a></p><p><a title="revolutiondrivingtuition.co.uk" href="http://www.revolutiondrivingtuition.co.uk/" target="_blank"><img title="revolutiondrivingtuition" alt="revolutiondrivingtuition" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/revolutiondrivingtuition.jpg" /></a></p><p><a title="rockatee.com" href="http://rockatee.com/" target="_blank"><img title="rockatee" alt="rockatee" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/rockatee.jpg" /></a></p><p><a title="ryancouser.com" href="http://www.ryancouser.com/" target="_blank"><img title="ryancouser" alt="ryancouser" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/ryancouser.jpg" /></a></p><p><a title="seanjohnson.net" href="http://www.seanjohnson.net/" target="_blank"><img title="seanjohnson" alt="seanjohnson" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/seanjohnson.jpg" /></a></p><p><a title="shylands.com" href="http://shylands.com/explore/" target="_blank"><img title="shylands" alt="shylands" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/shylands.jpg" /></a></p><p><a title="siajba.com" href="http://www.siajba.com/" target="_blank"><img title="siajba" alt="siajba" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/siajba.jpg" /></a></p><p><a title="simonwiffen.co.uk" href="http://www.simonwiffen.co.uk/" target="_blank"><img title="simonwiffen" alt="simonwiffen" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/simonwiffen.jpg" /></a></p><p><a title="simplycreative.com" href="http://www.simplycreative.com/" target="_blank"><img title="simplycreative" alt="simplycreative" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/simplycreative.jpg" /></a></p><p><a title="sitesquared.com" href="http://sitesquared.com/" target="_blank"><img title="sitesquared" alt="sitesquared" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/sitesquared.jpg" /></a></p><p><a title="smallmanrecords.com" href="http://smallmanrecords.com/" target="_blank"><img title="smallmanrecords" alt="smallmanrecords" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/smallmanrecords.jpg" /></a></p><p><a title="soupstudios.com" href="http://soupstudios.com/" target="_blank"><img title="soupstudios" alt="soupstudios" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/soupstudios.jpg" /></a></p><p><a title="stationersguild.org" href="http://www.stationersguild.org/" target="_blank"><img title="stationersguild" alt="stationersguild" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/stationersguild.jpg" /></a></p><p><a title="stonebriar.org" href="http://www.stonebriar.org/need-help/" target="_blank"><img title="stonebriar" alt="stonebriar" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/stonebriar.jpg" /></a></p><p><a title="studioimago.be" href="http://www.studioimago.be/" target="_blank"><img title="studioimago" alt="studioimago" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/studioimago.jpg" /></a></p><p><a title="techradar.com" href="http://www.techradar.com/" target="_blank"><img title="techradar" alt="techradar" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/techradar.jpg" /></a></p><p><a title="thecssgallerylist.com" href="http://www.thecssgallerylist.com/" target="_blank"><img title="thecssgallerylist" alt="thecssgallerylist" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/thecssgallerylist.jpg" /></a></p><p><a title="thehendersonbros.com" href="http://thehendersonbros.com/" target="_blank"><img title="thehendersonbros" alt="thehendersonbros" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/thehendersonbros.jpg" /></a></p><p><a title="theresumegirl.com" href="http://theresumegirl.com/" target="_blank"><img title="theresumegirl" alt="theresumegirl" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/theresumegirl.jpg" /></a></p><p><a title="thewellspringfoundation.com" href="http://www.thewellspringfoundation.com/" target="_blank"><img title="thewellspringfoundation" alt="thewellspringfoundation" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/thewellspringfoundation.jpg" /></a></p><p><a title="tickerville.com" href="http://www.tickerville.com/" target="_blank"><img title="tickerville" alt="tickerville" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/tickerville.jpg" /></a></p><p><a title="tnvacation.com" href="http://www.tnvacation.com/" target="_blank"><img title="tnvacation" alt="tnvacation" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/tnvacation.jpg" /></a></p><p><a title="traveloregon.com" href="http://www.traveloregon.com/" target="_blank"><img title="traveloregon" alt="traveloregon" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/traveloregon.jpg" /></a></p><p><a title="trendywebdesign.nilarian.com" href="http://trendywebdesign.nilarian.com/" target="_blank"><img title="trendywebdesign" alt="trendywebdesign" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/trendywebdesign.jpg" /></a></p><p><a title="trinitymarblefalls.org" href="http://www.trinitymarblefalls.org/" target="_blank"><img title="trinitymarblefalls" alt="trinitymarblefalls" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/trinitymarblefalls.jpg" /></a></p><p><a title="uae-abandoned.com" href="http://uae-abandoned.com/" target="_blank"><img title="uae-abandoned" alt="uae-abandoned" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/uae-abandoned.jpg" /></a></p><p><a title="underthesungardencenter.com" href="http://underthesungardencenter.com/" target="_blank"><img title="underthesungardencenter" alt="underthesungardencenter" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/underthesungardencenter.jpg" /></a></p><p><a title="victoriagaskelldriving.co.uk" href="http://www.victoriagaskelldriving.co.uk/" target="_blank"><img title="victoriagaskelldriving" alt="victoriagaskelldriving" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/victoriagaskelldriving.jpg" /></a></p><p><a title="vondutch.com" href="http://www.vondutch.com/" target="_blank"><img title="vondutch" alt="vondutch" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/vondutch.jpg" /></a></p><p><a title="wallpaperscript.net" href="http://www.wallpaperscript.net/" target="_blank"><img title="wallpaperscript" alt="wallpaperscript" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/wallpaperscript.jpg" /></a></p><p><a title="waltsbikeshop.com" href="http://www.waltsbikeshop.com/" target="_blank"><img title="waltsbikeshop" alt="waltsbikeshop" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/waltsbikeshop.jpg" /></a></p><p><a title="watersmedia.com" href="http://watersmedia.com/" target="_blank"><img title="watersmedia" alt="watersmedia" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/watersmedia.jpg" /></a></p><p><a title="watevertnkz.com" href="http://watevertnkz.com/" target="_blank"><img title="watevertnkz" alt="watevertnkz" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/watevertnkz.jpg" /></a></p><p><a title="web1.in" href="http://www.web1.in/" target="_blank"><img title="web1" alt="web1" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/web1.jpg" /></a></p><p><a title="webdesignerwall.com" href="http://www.webdesignerwall.com/" target="_blank"><img title="webdesignerwall" alt="webdesignerwall" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/webdesignerwall.jpg" /></a></p><p><a title="weieast.com" href="http://www.weieast.com/" target="_blank"><img title="weieast" alt="weieast" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/weieast.jpg" /></a></p><p><a title="eightshift.com" href="http://weightshift.com/" target="_blank"><img title="weightshift" alt="weightshift" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/weightshift.jpg" /></a></p><p><a title="welovewp.com" href="http://welovewp.com/" target="_blank"><img title="welovewp" alt="welovewp" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/welovewp.jpg" /></a></p><p><a title="white-water.hu" href="http://white-water.hu/" target="_blank"><img title="white-water" alt="white-water" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/white-water.jpg" /></a></p><p><a title="blog.wireroses.co.uk" href="http://blog.wireroses.co.uk/" target="_blank"><img title="wireroses" alt="wireroses" src="http://images.uheed.com/iwanna/2010/07/12/css-horizantal-menu/wireroses.jpg" /></a></p></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>session和cookie之间关系</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4689.shtml</link>
      <pubDate>5 Jul 2010 15:08:04</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4689.shtml</guid>
      <description><![CDATA[<div><span class="tpc_title"><font size="3"><span class="tpc_content"><font color="#993300">Session是由应用服务器维持的一个服务器端的存储空间，用户在连接服务器时，会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端，用Cookie保存的，用户提交页面时，会将这一 SessionID提交到服务器端，来存取Session数据。这一过程，是不用开发人员干预的。所以一旦客户端禁用Cookie，那么Session也会失效。<br /><br />服务器也可以通过URL重写的方式来传递SessionID的值，因此不是完全依赖Cookie。如果客户端Cookie禁用，则服务器可以自动通过重写URL的方式来保存Session的值，并且这个过程对程序员透明。<br /><br />可以试一下，即使不写Cookie，在使用request.getCookies();取出的Cookie数组的长度也是1，而这个Cookie的名字就是JSESSIONID</font><font color="#993300">，还有一个很长的二进制的字符串，是SessionID的值。<br /><br />Cookie是客户端的存储空间，由浏览器来维持。</font></span><br /></font></span><span class="tpc_title"><span class="tpc_content"><font color="#993300" size="3">在一些投票之类的场合，我们往往因为公平的原则要求每人只能投一票，在一些WEB开发中也有类似的情况，这时候我们通常会使用COOKIE来实现，例如如下的代码：<br /><font color="#ff0000">&lt; % cookie[]cookies = request.getCookies();<br />if (cookies.lenght == 0 || cookies == null)<br />&nbsp;&nbsp; doStuffForNewbie();<br />//没有访问过&nbsp;&nbsp;&nbsp;<br />}<br /><br />else<br />{<br />&nbsp;&nbsp; doStuffForReturnVisitor(); //已经访问过了<br />}<br /><br />% &gt;</font><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是很浅显易懂的道理，检测COOKIE的存在，如果存在说明已经运行过写入COOKIE的代码了，然而运行以上的代码后，无论何时结果都是执行doStuffForReturnVisitor()，通过控制面板-Internet选项-设置-察看文件却始终看不到生成的cookie文件，奇怪，代码明明没有问题，不过既然有cookie，那就显示出来看看。<br /><font color="#ff0000">cookie[]cookies = request.getCookies();<br />if (cookies.lenght == 0 || cookies == null)<br />&nbsp;&nbsp; out.println(&quot;Has not visited this website&quot;);<br />}<br /><br />else<br />{<br />&nbsp;&nbsp; for (int i = 0; i &lt; cookie.length; i++)<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp; out.println(&quot;cookie name:&quot; + cookies[i].getName() + &quot;cookie value:&quot; +<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie[i].getValue());<br />&nbsp;&nbsp; }<br />}<br /></font><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行结果:<br />cookie name:JSESSIONID cookie value:KWJHUG6JJM65HS2K6 <br /><br />为什么会有cookie呢,大家都知道，http是无状态的协议，客户每次读取web页面时，服务器都打开新的会话，而且服务器也不会自动维护客户的上下文信息，那么要怎么才能实现网上商店中的购物车呢，session就是一种保存上下文信息的机制，它是针对每一个用户的，变量的值保存在服务器端，通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的，默认使用cookie来实现，系统会创造一个名为JSESSIONID的输出cookie，我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的，并不是写到硬盘上的，这也就是我们刚才看到的JSESSIONID，我们通常情是看不到JSESSIONID的，但是当我们把浏览器的cookie禁止后，web服务器会采用URL重写的方式传递Sessionid，我们就可以在地址栏看到sessi />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 明白了原理，我们就可以很容易的分辨出persistent cookies和session cookie的区别了，网上那些关于两者安全性的讨论也就一目了然了，session cookie针对某一次会话而言，会话结束session cookie也就随着消失了，而persistent cookie只是存在于客户端硬盘上的一段文本（通常是加密的），而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击，自然不如session cookie安全了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通常session cookie是不能跨窗口使用的，当你新开了一个浏览器窗口进入相同页面时，系统会赋予你一个新的sessionid，这样我们信息共享的目的就达不到了，此时我们可以先把sessionid保存在persistent cookie中，然后在新窗口中读出来，就可以得到上一个窗口SessionID了，这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking（会话跟踪）。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在一些web开发的书中，往往只是简单的把Session和cookie作为两种并列的http传送信息的方式，session cookies位于服务器端，persistent cookie位于客户端，可是session又是以cookie为基础的，明白的两者之间的联系和区别，我们就不难选择合适的技术来开发web service了。</font></span></span><div id="c_jquery_test" style="display: none">&nbsp;</div>&ltscript type="text/ ">if ($ != jQuery) {$ = jQuery.noConflict();}&lt/script></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>为何需要静态类或者静态变量</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4688.shtml</link>
      <pubDate>5 Jul 2010 15:07:26</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4688.shtml</guid>
      <description><![CDATA[<div><p>在c#中一个类的静态成员有静态变量和静态方法,这里首先介绍静态变量.</p><p>首先说一下静态变量的特点:</p><p>1.静态变量属于类,而不属于类的任何实例.</p><p>(From MSDN:Use the <span><span class="input">static</span></span> modifier to declare a static member, which belongs to the type itself rather than to a specific object.)</p><p>2.静态变量可以通过类名直接访问,而不能通过实例访问.</p><p>&nbsp; 如: class A<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static string&nbsp; AName;<br />&nbsp;&nbsp;&nbsp; }</p><p>我们想要访问AName可以通过A.AName 的方式.</p><p>3.在内存中static 变量只分配一块内存,各个实例如果修改静态变量则修改的是同一个内存地址上的值,也就是静态变量被各个实例共享.</p><p>&nbsp; 如下代码所示:</p><div class="cnblogs_code" ><img id="code_img_closed_a495aa99-89c2-40b7-a52d-57a9aebacf72" class="code_img_closed" alt="" jquery1278311952583="2" style="display: none" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" /><img id="code_img_opened_a495aa99-89c2-40b7-a52d-57a9aebacf72" class="code_img_opened" alt=""  src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" /><span class="cnblogs_code_collapse">代码</span><div id="cnblogs_code_open_a495aa99-89c2-40b7-a52d-57a9aebacf72" class="cnblogs_code_hide" jquery1278311952583="1" style="display: block"><pre><div><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Program<br />    {<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> sum </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #800080">0</span><span style="color: #000000">;<br />        </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Main(</span><span style="color: #0000ff">string</span><span style="color: #000000">[] args)<br />        {<br />            Program p1 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Program();<br />            Program p2 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Program();<br />            Program p3 </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Program();<br />            Console.WriteLine(p1.f(p2.f(p3.f(</span><span style="color: #800080">2</span><span style="color: #000000">))));<br />            Console.Read();<br />        }<br />        </span><span style="color: #0000ff">int</span><span style="color: #000000"> f(</span><span style="color: #0000ff">int</span><span style="color: #000000"> n)<br />        { <br />            sum </span><span style="color: #000000">+=</span><span style="color: #000000"> n; <br />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> sum </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #800080">1</span><span style="color: #000000">; <br />        }<br />    }</span></div></pre></div></div><p>各位同学,Console 最后输出的是多少呢 ?</p><div id="c_jquery_test" style="display: none">&nbsp;</div><hr /></div><div>静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为：无论对象发生什么更改，这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时，就可以使用静态类。</div><div id="ctl00_rs1_mainContentContainer_cpe216043" class="MTPS_CollapsibleRegion"><div id="ctl00_rs1_mainContentContainer_cpe216043_h" class="CollapseRegionLink"><img id="ctl00_rs1_mainContentContainer_cpe216043_i" alt="" src="http://i.msdn.microsoft.com/platform/Controls/CollapsibleArea/resources/minus.gif" style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; vertical-align: middle; border-left-width: 0px" />&nbsp;静态类</div><div id="ctl00_rs1_mainContentContainer_cpe216043_c" class="MTPS_CollapsibleSection" style="width: auto; display: block; height: auto; overflow: visible"><div class="MTPS_CollapsibleSection" style="border-bottom: medium none; border-left: medium none; display: block; border-top: medium none; border-right: medium none"><a name="sectionToggle0"></a><p>类可以声明为 <a id="ctl00_rs1_mainContentContainer_ctl07"  href="http://msdn2.microsoft.com/zh-cn/library/98f28cdx(VS.80).aspx">static</a> 的，以指示它仅包含静态成员。不能使用 <a id="ctl00_rs1_mainContentContainer_ctl08"  href="http://msdn2.microsoft.com/zh-cn/library/51y09td4(VS.80).aspx">new</a> 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。</p><p>使用静态类来包含不与特定对象关联的方法。例如，创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。</p><p>静态类的主要功能如下：</p><ul>    <li>    <p>它们仅包含静态成员。</p>    </li>    <li>    <p>它们不能被实例化。</p>    </li>    <li>    <p>它们是密封的。</p>    </li>    <li>    <p>它们不能包含<a id="ctl00_rs1_mainContentContainer_ctl09"  href="http://msdn2.microsoft.com/zh-cn/library/k6sa6h87(VS.80).aspx">实例构造函数</a>。</p>    </li></ul><p>因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。</p><p>使用静态类的优点在于，编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。</p><p>静态类是密封的，因此不可被继承。静态类不能包含构造函数，但仍可声明静态构造函数以分配初始值或设置某个静态状态。</p></div></div></div><div id="c_jquery_test" style="display: none">&nbsp;</div>&ltscript type="text/ ">if ($ != jQuery) {$ = jQuery.noConflict();}&lt/script>]]></description>
      <category>2906</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>CACHE生命周期</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4687.shtml</link>
      <pubDate>5 Jul 2010 14:59:16</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4687.shtml</guid>
      <description><![CDATA[<div><span style="font-family: 宋体; font-size: 10pt">在</span><span style="font-family: Arial; font-size: 10pt">ASP.NET</span><span style="font-family: 宋体; font-size: 10pt">中，有很多种保存信息的内置对象，如</span><span style="font-family: Arial; font-size: 10pt">:Application,Session,Cookie,ViewState</span><span style="font-family: 宋体; font-size: 10pt">和</span><span style="font-family: Arial; font-size: 10pt">Cache</span><span>等。下面分别介绍它们的用法和区别。<br /><br /></span><table border="1" cellspacing="0" cellpadding="0" width="553" style="margin: auto auto auto 36pt; width: 554px; border-collapse: collapse">    <tbody>        <tr style="height: 22.6pt">            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; height: 22.6pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; background: #d9d9d9; font-size: 10pt">方法</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; height: 22.6pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; background: #d9d9d9; font-size: 10pt">信息量大小</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 22.6pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; background: #d9d9d9; font-size: 10pt">作用域和保存时间</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 22.6pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; background: #d9d9d9; font-size: 10pt">应用范围</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; height: 22.6pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; background: #d9d9d9; font-size: 10pt">保存位置</span></p>            </td>        </tr>        <tr style="height: 14pt">            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; height: 14pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: Arial; font-size: 10pt">Application</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; height: 14pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">任意大小</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 14pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">整个应用程序的生命期</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 14pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">整个应用程序</span><span style="font-family: Arial; font-size: 10pt">/</span><span style="font-family: 宋体; font-size: 10pt">所有用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; height: 14pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">服务器端</span></p>            </td>        </tr>        <tr>            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: Arial; font-size: 10pt">Cache</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">任意大小</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">可以根据需要设定</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 130px; padding-right: 2.25pt; height: 34px; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">整个应用程序</span><span style="font-family: Arial; font-size: 10pt">/</span><span style="font-family: 宋体; font-size: 10pt">所有用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">服务器端</span></p>            </td>        </tr>        <tr>            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: Arial; font-size: 10pt">Session</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">小量</span><span style="font-family: Arial; font-size: 10pt">,</span><span style="font-family: 宋体; font-size: 10pt">简单的数据</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 153px; padding-right: 2.25pt; height: 63px; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">用户活动时间</span><span style="font-family: Arial; font-size: 10pt">+</span><span style="font-family: 宋体; font-size: 10pt">一段延迟时间</span><span style="font-family: Arial; font-size: 10pt">(</span><span style="font-family: 宋体; font-size: 10pt">一般为</span><span style="font-family: Arial; font-size: 10pt">20</span><span style="font-family: 宋体; font-size: 10pt">分钟</span><span style="font-family: Arial; font-size: 10pt">)</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">单个用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">服务器端</span></p>            </td>        </tr>        <tr style="height: 19.9pt">            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; height: 19.9pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: Arial; font-size: 10pt">Cookie</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; height: 19.9pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">小量</span><span style="font-family: Arial; font-size: 10pt">,</span><span style="font-family: 宋体; font-size: 10pt">简单的数据</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 19.9pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">可以根据需要设定</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 19.9pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">单个用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; height: 19.9pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">客户端</span></p>            </td>        </tr>        <tr style="height: 20.45pt">            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: Arial; font-size: 10pt">Viewstate</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">小量</span><span style="font-family: Arial; font-size: 10pt">,</span><span style="font-family: 宋体; font-size: 10pt">简单的数据</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">一个</span><span style="font-family: Arial; font-size: 10pt">Web</span><span style="font-family: 宋体; font-size: 10pt">页面的生命期</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">单个用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">客户端</span></p>            </td>        </tr>        <tr style="height: 20.45pt">            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">隐藏域</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">小量</span><span style="font-family: Arial; font-size: 10pt">,</span><span style="font-family: 宋体; font-size: 10pt">简单的数据</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">一个</span><span style="font-family: Arial; font-size: 10pt">Web</span><span style="font-family: 宋体; font-size: 10pt">页面的生命期</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">单个用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">客户端</span></p>            </td>        </tr>        <tr style="height: 20.45pt">            <td width="75" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 56.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">查询字符串</span></p>            </td>            <td width="108" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 81pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">小量</span><span style="font-family: Arial; font-size: 10pt">,</span><span style="font-family: 宋体; font-size: 10pt">简单的数据</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">直到下次页面跳转请求</span></p>            </td>            <td style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">单个用户</span></p>            </td>            <td width="82" style="border-bottom-color: #d4d0c8; padding-bottom: 2.25pt; background-color: transparent; border-top-color: #d4d0c8; padding-left: 2.25pt; width: 61.4pt; padding-right: 2.25pt; height: 20.45pt; border-right-color: #d4d0c8; border-left-color: #d4d0c8; padding-top: 2.25pt">            <p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: 宋体; font-size: 10pt">客户端</span></p>            </td>        </tr>    </tbody></table><p align="left" style="text-align: left; margin: 0cm 0cm 0pt"><span style="font-family: Arial; font-size: 9pt"><br /></span><span style="font-family: Arial; font-size: 10pt">&nbsp;</span></p><p><strong>1.Application对象</strong></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合. 下面我们做个在线用户统计的例子来说明这个问题: <br />&nbsp;&nbsp;&nbsp; (以文件的形式存放网站总访问量)</p><p>Global.asax类</p><p>&nbsp;&nbsp;<img id="code_img_closed_22cadcfc-5c4a-4cf0-adb3-cb988b923ca0" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" style="display: none" /><img id="code_img_opened_22cadcfc-5c4a-4cf0-adb3-cb988b923ca0" class="code_img_opened"  src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><span class="cnblogs_code_collapse">代码</span></p><div class="cnblogs_code" ><div id="cnblogs_code_open_22cadcfc-5c4a-4cf0-adb3-cb988b923ca0"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><span style="color: #0000ff"><font face="Courier New">using</font></span><font face="Courier New"><span style="color: #000000">&nbsp;System;<br /></span><span style="color: #0000ff">using</span></font><font face="Courier New"><span style="color: #000000">&nbsp;System.Collections;<br /></span><span style="color: #0000ff">using</span></font><font face="Courier New"><span style="color: #000000">&nbsp;System.ComponentModel;<br /></span><span style="color: #0000ff">using</span></font><font face="Courier New"><span style="color: #000000">&nbsp;System.Web;<br /></span><span style="color: #0000ff">using</span></font><font face="Courier New"><span style="color: #000000">&nbsp;System.Web.SessionState;<br /></span><span style="color: #0000ff">using</span></font><font face="Courier New"><span style="color: #000000">&nbsp;System.IO;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;Global&nbsp;的摘要说明。</span></font><span style="color: #808080"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span></font><font face="Courier New"><span style="color: #000000">&nbsp;Global&nbsp;:&nbsp;System.Web.HttpApplication<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;必需的设计器变量。</span></font><span style="color: #808080"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;System.ComponentModel.IContainer&nbsp;components&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span></font><font face="Courier New"><span style="color: #000000">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span></font><font face="Courier New"><span style="color: #000000">&nbsp;FileStream&nbsp;fileStream;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;StreamReader&nbsp;reader;</span><span style="color: #008000">//</span><span style="color: #008000">读字符流</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;StreamWriter&nbsp;writer;</span><span style="color: #008000">//</span><span style="color: #008000">写字符流</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span></font><font face="Courier New"><span style="color: #000000">&nbsp;Global()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></font><font face="Courier New"><span style="color: #000000">&nbsp;Application_Start(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">CurrentGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #800080">0</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">初始花为０；</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileStream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;File.Open(Server.MapPath(</span><span style="color: #800000">&quot;</span><span style="color: #800000">counts.text</span><span style="color: #800000">&quot;</span><span style="color: #000000">),FileMode.OpenOrCreate);</span><span style="color: #008000">//</span><span style="color: #008000">文件不存在，创建文件</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StreamReader(fileStream);</span><span style="color: #008000">//</span><span style="color: #008000">要读取的完整路径</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">AllGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Convert.ToInt32(reader.ReadLine());&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">从当前流中读取一行字符并将数据作为字符串返回</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reader.Close();</span><span style="color: #008000">//</span><span style="color: #008000">关闭流</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Session_Start(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e)</span><span style="color: #008000">//</span><span style="color: #008000">当用户访问网站时，在线用户+１，总访问数+１</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.Lock();</span><span style="color: #008000">//</span><span style="color: #008000">同步,避免同时写入</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">CurrentGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">)Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">CurrentGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">总在线用户数</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">AllGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">)Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">AllGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">访问网站的总用户数</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileStream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileStream(Server.MapPath(</span><span style="color: #800000">&quot;</span><span style="color: #800000">counts.text</span><span style="color: #800000">&quot;</span><span style="color: #000000">),FileMode.OpenOrCreate,FileAccess.ReadWrite);</span></font><font face="Courier New"><span style="color: #008000">//<br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StreamWriter(fileStream);</span><span style="color: #008000">//</span><span style="color: #008000">实现一个写入流，使其以一种特定的编码向流中写入字符</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">AllGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">].ToString());</span><span style="color: #008000">//</span><span style="color: #008000">把访问网站的总用户数再次写入到文件</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.Close();</span><span style="color: #008000">//</span><span style="color: #008000">关闭写入流</span></font><span style="color: #008000"><br /></span><span style="color: #000000"><br /><font face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.UnLock();</font></span><font face="Courier New"><span style="color: #008000">//</span><span style="color: #008000">同步结束</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Session_End(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e)</span><span style="color: #008000">//</span><span style="color: #008000">当前用户退出网站时,在线用户数量-1,</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.Lock();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">CurrentGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">)Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">CurrentGuests</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">总在线用户数量-1</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.UnLock();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #800080">2</span></font><font face="Courier New"><span style="color: #000000">)&nbsp;WebForm1.aspx<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Load(</span><span style="color: #0000ff">object</span></font><font face="Courier New"><span style="color: #000000">&nbsp;sender,&nbsp;System.EventArgs&nbsp;e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Label1.Text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">正在访问站点的用户数：</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">CurrentGuests</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">].ToString();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Label2.Text&nbsp;</span><span style="color: #000000">=</span><span style="color: #800000">&quot;</span><span style="color: #800000">访问过站点的总用户数：</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Application[</span><span style="color: #800000">&quot;</span><span style="color: #800000">AllGuests</span><span style="color: #800000">&quot;</span></font><span style="color: #000000"><font face="Courier New">].ToString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /></font></span></div></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p><strong>2.Session对象</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session用于保存每个用户的专用信息.每个客户端用户访问时，服务器都为每个用户分配一个唯一的会话ID（Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择.使用Session对象保存信息的代码如下:</p><p><br />&nbsp;</p><div class="cnblogs_code"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><font face="Courier New"><span style="color: #008000">//</span><span style="color: #008000">存放信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">Session[</span><span style="color: #800000">&quot;</span><span style="color: #800000">key</span><span style="color: #800000">&quot;</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #800000">&quot;</span><span style="color: #800000">value</span><span style="color: #800000">&quot;</span></font><span style="color: #000000"><br /></span><font face="Courier New"><span style="color: #008000">//</span><span style="color: #008000">读取数据</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;UserName</span><span style="color: #000000">=</span><span style="color: #000000">Session[</span><span style="color: #800000">&quot;</span><span style="color: #800000">key</span><span style="color: #800000">&quot;</span><span style="color: #000000">].ToString();</span></font></div></div><p>&nbsp;</p><p><strong>3.Cookie对象</strong><br />&nbsp;&nbsp;&nbsp; Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息，信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用Cookie对象保存的代码如下:</p><p>&nbsp;</p><div class="cnblogs_code"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><font face="Courier New"><span style="color: #008000">//</span><span style="color: #008000">存放信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">Response.Cookies[</span><span style="color: #800000">&quot;</span><span style="color: #800000">key</span><span style="color: #800000">&quot;</span><span style="color: #000000">].Value</span><span style="color: #000000">=</span><span style="color: #800000">&quot;</span><span style="color: #800000">value</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">;<br /></span><span style="color: #008000">//</span><span style="color: #008000">读取信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;UserID</span><span style="color: #000000">=</span><span style="color: #000000">Response.Cookies[</span><span style="color: #800000">&quot;</span><span style="color: #800000">key</span><span style="color: #800000">&quot;</span><span style="color: #000000">].Value;</span></font></div></div><p>&nbsp;</p><p>&nbsp;</p><p><strong>4.ViewState对象</strong><br />&nbsp;&nbsp;&nbsp; ViewState 常用于保存单个用户的状态信息，有效期等于页面的生存期。跟隐藏控件相似。viewstate是在本页面之内各函数间进行传值的 , 至于为什么要使用这种方法是因为在一个事件发生之后 , 页面可能会刷新 , 如果定义全局变量会被清零 , 所以要使用 viewstate. ViewState容器可以保持大量的数据，但是必须谨慎使用，因为过多使用会影响应用程序的性能。所有Web服务器控件都使用ViewState在页面回发期音保存自己的状态信息。如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的ViewState，避免不必要的资源浪费。通过给@Page指令添加&ldquo;EnableViewState=false&rdquo;属性可以禁止整个页面的ViewState。使用ViewState对象保存信息的代码如下。</p><p>&nbsp;</p><div class="cnblogs_code"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">存放信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;ViewState[</span><span style="color: #800000">&quot;</span><span style="color: #800000">key</span><span style="color: #800000">&quot;</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #800000">&quot;</span><span style="color: #800000">value</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">;<br />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">读取信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;NameID</span><span style="color: #000000">=</span><span style="color: #000000">ViewState[</span><span style="color: #800000">&quot;</span><span style="color: #800000">nameID</span><span style="color: #800000">&quot;</span><span style="color: #000000">].ToString();</span></font></div></div><p>&nbsp;</p><p>&nbsp;</p><p><strong>5.Cache对象</strong><br />&nbsp;&nbsp; Cache对象用于在HTTP请求间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。常用于将频繁访问的大量服务器资源存储在内存中，当用户发出相同的请求后服务器不再次处理而是将Cache中保存的信息返回给用户，节省了服务器处理请求的时间。其生存期依赖于该应用程序的生存期。当重新启动应用程序时，将重新创建其Cache对象的实例。使用Cache对象保存信息的代码如下。</p><p>&nbsp;</p><div class="cnblogs_code"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">存放信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;Cache[</span><span style="color: #800000">&quot;</span><span style="color: #800000">nameID</span><span style="color: #800000">&quot;</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #800000">&quot;</span><span style="color: #800000">0001</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">;<br />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">存放信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;Cache.Insert(</span><span style="color: #800000">&quot;</span><span style="color: #800000">nameID</span><span style="color: #800000">&quot;</span><span style="color: #000000">,</span><span style="color: #800000">&quot;</span><span style="color: #800000">0001</span><span style="color: #800000">&quot;</span><span style="color: #800080">1</span></font><font face="Courier New"><span style="color: #000000">);<br />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">读取信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;NameID</span><span style="color: #000000">=</span><span style="color: #000000">Cache[</span><span style="color: #800000">&quot;</span><span style="color: #800000">nameID</span><span style="color: #800000">&quot;</span><span style="color: #000000">].ToString();</span></font></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;&nbsp;<strong> 6.隐藏域</strong><br />&nbsp; Hidden控件是属于HTML类型的服务器控件，使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别，只是它不会在用户端的浏览器中显示，始终处于隐藏状态。但是每次页面提交的时候，此控件和其它服务器控件一同提交到服务器端，因此在服务器端可以使用Value属性获取或保存一些数据信息。使用Hidden控件保存信息的代码如下。</p><p>&nbsp;</p><div class="cnblogs_code"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">存放信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;Hidden.Value</span><span style="color: #000000">=</span><span style="color: #800000">&quot;</span><span style="color: #800000">0001</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">;<br />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">获取信息</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;NameID</span><span style="color: #000000">=</span><span style="color: #000000">Hidden.Value;</span></font></div></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;<strong> 7.查询字符串</strong><br />&nbsp;查询字符串的方式是将要传递的值连接在URL后面，然后通过Response.Redirect方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于URL的长度有一定的限制，因此不能传递太大的信息，加外安全性也不是很好。<br />&nbsp; 传递信息如下。问号后面格式 key1=value1&amp;key2=value2</p><p>&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code" ><img id="code_img_closed_1961d614-2ea8-45fb-834f-d01324799417" class="code_img_closed" alt="" src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" style="display: none" /><img id="code_img_opened_1961d614-2ea8-45fb-834f-d01324799417" class="code_img_opened"  src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><span class="cnblogs_code_collapse">代码</span><div id="cnblogs_code_open_1961d614-2ea8-45fb-834f-d01324799417"><div><!--<br/  /><br/  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/  />http://www.CodeHighlighter.com/<br/  /><br/  />--><font face="Courier New"><span style="color: #000000">Response.Redirect(</span><span style="color: #800000">&quot;</span><span style="color: #800000">List.aspx?nameID=0001&amp;gradeID=002</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">);<br />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">执行上面的语句后在IE地址栏显示的URL的代码如下。</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;http:</span><span style="color: #008000">//</span></font><font face="Courier New"><span style="color: #008000">localhost/List.aspx?nameID=0001&amp;grade=002<br />&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当跳转到List.aspx后，可以通过以下代码获得所传递的信息。</span></font><span style="color: #008000"><br /></span><font face="Courier New"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">string</span></font><font face="Courier New"><span style="color: #000000">&nbsp;NameID.GradeID;<br />&nbsp;&nbsp;NameID</span><span style="color: #000000">=</span><span style="color: #000000">Request.Params[</span><span style="color: #800000">&quot;</span><span style="color: #800000">nameID</span><span style="color: #800000">&quot;</span></font><font face="Courier New"><span style="color: #000000">];<br />&nbsp;&nbsp;GradeID</span><span style="color: #000000">=</span><span style="color: #000000">Request.Params[</span><span style="color: #800000">&quot;</span><span style="color: #800000">gradeID</span><span style="color: #800000">&quot;</span><span style="color: #000000">];&nbsp;</span></font></div></div></div></div>]]></description>
      <category>2907</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>数据库指针</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4686.shtml</link>
      <pubDate>5 Jul 2010 14:55:12</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4686.shtml</guid>
      <description><![CDATA[<div>数据库里本身没有指针，只有游标，而游标的作用是：</div><div>游标是系统为用户开设的一个数据缓冲区，存放SQL语句的执行结果。由系统或用户以变量的形式定义。用户可以用SQL语句逐一从游标中获取记录，并赋给主变量，交由主语言进一步处理，主语言是面向记录的，一组主变量一次只能存放一条记录在某些情况下，需要把数据从存放在磁盘的表中调到计算机内存中进行处理，最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高，否则频繁的磁盘数据交换会降低效率。用数据库语言来描述游标就是映射在结果集中一行数据上的位置实体，有了游标，用户就可以访问结果集中的任意一行数据了，将游标放置到某行后，即可对该行数据进行操作，例如提取当前行的数据等。</div><div>游标有两种类型：显式游标和隐式游标。在程序中用到的SELECT...INTO...查询语句，一次只能从数据库中提取一行数据，对于这种形式的查询和触发器操作，系统都会使用一个隐式游标。但是如果要提取多行数据，就要由程序员定义一个显式游标，并通过与游标有关的语句进行处理。显式游标对应一个返回结果为多行多列的SELECT语句。</div><div>&nbsp;</div><div>数据库指针，也就是记录集游标．</div>]]></description>
      <category>2906</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>类和结构体的区别</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4685.shtml</link>
      <pubDate>5 Jul 2010 14:48:38</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4685.shtml</guid>
      <description><![CDATA[<div><div>&nbsp;　一　区别有三: &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 1: &nbsp;<wbr></wbr> 类可以继承,结构不可以. &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 2: &nbsp;<wbr></wbr> 类是引用类型,结构是值类型 &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 3: &nbsp;<wbr></wbr> 类在堆中,结构在栈分配内存</div><div>　二 &nbsp;<wbr></wbr> .类与结构的差别&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　1.值类型与引用类型&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　结构是值类型：值类型在堆栈上分配地址，所有的基类型都是结构类型，例如：int &nbsp;<wbr></wbr> 对应System.int32 &nbsp;<wbr></wbr> 结构，string &nbsp;<wbr></wbr> 对应 &nbsp;<wbr></wbr> system.string &nbsp;<wbr></wbr> 结构 &nbsp;<wbr></wbr> ，通过使用结构可以创建更多的值类型&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　类是引用类型：引用类型在堆上分配地址&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　堆栈的执行效率要比堆的执行效率高，可是堆栈的资源有限，不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象，而类处理某个商业逻辑&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　因为结构是值类型所以结构之间的赋值可以创建新的结构，而类是引用类型，类之间的赋值只是复制引用&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　注：&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　1.虽然结构与类的类型不一样，可是他们的基类型都是对象（object）,c#中所有类型的基类型都是object&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　2.虽然结构的初始化也使用了New &nbsp;<wbr></wbr> 操作符可是结构对象依然分配在堆栈上而不是堆上，如果不使用&ldquo;新建&rdquo;(new)，那么在初始化所有字段之前，字段将保持未赋值状态，且对象不可用&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　2．继承性&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　结构：不能从另外一个结构或者类继承，本身也不能被继承，虽然结构没有明确的用sealed声明，可是结构是隐式的sealed &nbsp;<wbr></wbr> .&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　类：完全可扩展的，除非显示的声明sealed &nbsp;<wbr></wbr> 否则类可以继承其他类和接口，自身也能被继承&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　注：虽然结构不能被继承 &nbsp;<wbr></wbr> 可是结构能够继承接口，方法和类继承接口一样&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　例如:结构实现接口&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>interface &nbsp;<wbr></wbr> IImage &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　{ &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　void &nbsp;<wbr></wbr> Paint(); &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　} &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　struct &nbsp;<wbr></wbr> Picture &nbsp;<wbr></wbr> : &nbsp;<wbr></wbr> IImage &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　{ &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　public &nbsp;<wbr></wbr> void &nbsp;<wbr></wbr> Paint() &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　{ &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　// &nbsp;<wbr></wbr> painting &nbsp;<wbr></wbr> code &nbsp;<wbr></wbr> goes &nbsp;<wbr></wbr> here &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　} &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　private &nbsp;<wbr></wbr> int &nbsp;<wbr></wbr> x, &nbsp;<wbr></wbr> y, &nbsp;<wbr></wbr> z; &nbsp;<wbr></wbr> // &nbsp;<wbr></wbr> other &nbsp;<wbr></wbr> struct &nbsp;<wbr></wbr> members &nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　}&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　3．内部结构：&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　结构：&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　没有默认的构造函数，但是可以添加构造函数&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　没有析构函数&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　没有abstract和sealed(因为不能继承)&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　不能有protected修饰符&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　可以不使用new初始化&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　在结构中初始化实例字段是错误的&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　类：<br />&nbsp;<wbr></wbr> 　　有默认的构造函数&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　有析构函数&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　可以使用abstract和sealed&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　有protected修饰符&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　必须使用new初始化&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　三．如何选择结构还是类&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　讨论了结构与类的相同之处和差别之后，下面讨论如何选择使用结构还是类：&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　1．堆栈的空间有限，对于大量的逻辑的对象，创建类要比创建结构好一些&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　2．结构表示如点、矩形和颜色这样的轻量对象，例如，如果声明一个含有 &nbsp;<wbr></wbr> 1000 &nbsp;<wbr></wbr> 个点对象的数组，则将为引用每个对象分配附加的内存。在此情况下，结构的成本较低。&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　3．在表现抽象和多级别的对象层次时，类是最好的选择&nbsp;<wbr></wbr>&nbsp;<wbr></wbr>&nbsp;<wbr></wbr><br />&nbsp;<wbr></wbr> 　　4．大多数情况下该类型只是一些数据时，结构时最佳的选择</div></div>]]></description>
      <category>2906</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>函数式编程的杂七杂八（非常乱）</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4684.shtml</link>
      <pubDate>2 Jul 2010 20:28:03</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4684.shtml</guid>
      <description><![CDATA[<div>1.把大象关进冰箱里问题<br />面向过程：</div><div>把大象关进冰箱里：<br />&nbsp;&nbsp;&nbsp; 把冰箱门打开=&gt;<br />&nbsp;&nbsp;&nbsp; 大象放冰箱里=&gt;<br />&nbsp;&nbsp;&nbsp; 冰箱门关上</div><div>面向对象：</div><div>冰箱.开门()<br />冰箱.放入(大象)<br />冰箱.关门()</div><div>函数式：</div><div>关进（冰箱，大象）:<br />&nbsp; 关门(放入(开门(冰箱)，大象))<br />&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</div><div>2.<br />C#引入FP的特性被某些人称作语法糖，我一直有意把这种观点拖出来痛打一顿（注意不是把持有这种观点的人拖出来痛打），至于持有这种观点的人，我禁止你们写a+b*c，以后给我统统去写汇编<br />MOV&nbsp; EAX, [b]<br />MUL&nbsp; EAX, [c]<br />ADD&nbsp; EAX, [a]</div><div>当然前提是我能禁止得了。</div><div>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</div><div>3.语言特性和编程范式完全是两码事<br />从某种程度上来说，C语言既能进行函数式编程，又能进行</div><div>在支持面向对象的语言里，我完全可以设计一个类似下面的类</div><div>class Search {<br />&nbsp;virtual List Extend(Node node)<br />&nbsp;virtual bool Beam(Node node)<br />&nbsp;virtual bool CheckFinish(Node node)<br />&nbsp;Node Search()<br />&nbsp;{<br />&nbsp; OrderedCollection openlist=new OrderedCollection();<br />&nbsp; openlist.put(node);<br />&nbsp; while(!openlist.empty()){<br />&nbsp;&nbsp; Node current=openlist.get();<br />&nbsp;&nbsp; if(!Beam(current)){<br />&nbsp;&nbsp;&nbsp; List extended=Extend(current);<br />&nbsp;&nbsp;&nbsp; for(var i=0;i&lt;extended.length;i++)&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp; if(Finish(extended[i]))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return extended[i];<br />&nbsp;&nbsp;&nbsp;&nbsp; openlist.put(extended[i]);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp; }<br />&nbsp; }<br />&nbsp; return null;<br />&nbsp;}<br />}</div><div>我甚至用到了一个设计模式：模板方法。</div><div>不过这个代码跟面向对象没有半点关系，我只是在利用某些语言特性而已。</div><div>对于任何一门编程语言而言 把class当成&quot;类&quot;这个意思都是程序员一厢情愿的想法&mdash;&mdash;编译器才不在乎这个关键字是class还是glass，只是个关键字而已。</div><div>父亲们在这几这些语言的时候，当然是有意识地提醒你这个特性将被用于面向对象，但人家没有强迫你这样做。</div><div>于是某些不安分的同学（比如我），就喜欢拿面向对象特性来干一些不是面向对象的事，或者拿一些不是面向对象的特性来干面向对象的事情。</div><div><br />所以对于C而言 closure无非是比函数指针多了一个void*而已，多传一个参数又不会少块肉&mdash;&mdash;你敢说这不是语法糖？</div><div>不过拿这样的方式来做FP确实闻所未闻，这从一个侧面说明了语言特性对于人的思维影响还是很大的。</div><div>所以尽量不要做那些扭着来语言特性来的事情，比如，用人家叫Exception的东西表达正常逻辑。</div><div>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</div><div>4.给10个按钮改变颜色<br />for(var i = 0 ; i &lt; 10 ; i++ )<br />&nbsp;&nbsp;&nbsp; button[i].background = XXXX;</div><div>这段简单的代码丢失了一个重要信息，那就是&quot;给10个按钮改变颜色的顺序是不要求的&quot;。</div><div>所以想这段代码翻译回去变成原来的语义是不能的。</div><div>但是函数式可以。</div><div>任何一个函数都不介意自己的参数被求值的顺序。</div><div>但是任何一个函数不会在自己参数被求值之前执行。</div><div>所以 放入(开门(冰箱)，大象) 一定会在 开门(冰箱) 之后执行。</div><div>这些被丢掉的信息，在多核处理器中尤其重要。</div><div>你写</div><div>dotA();<br />dotB();</div><div>的时候，我肯定不知道doA和doB是否能并行执行。</div><div>但是</div><div>do(dotA(),dotB())</div><div>这时候，我肯定知道doA和doB可以同时做。</div><div>神啊 原谅我用dota做SEO吧......</div><div>&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;</div><div>5.范式是认识世界的方法论<br />使持续工作12小时（皮鞭抽（程序员），工作用计算机） ，</div><div>对于完成一个项目，有些老板是这样理解的；</div><div>皮鞭抽程序员=&gt;勒令程序员用计算机工作=&gt;等待完成</div><div>也有些老板是这样理解的。</div><div>当老板思考&quot;如何完成工作&quot;的时候，他们也许会使用完全不同的方法得到相同的结论。</div><div>这其实与编程无关，当你开始思考这世界的时候，一定会选择其一来理解世界。</div><div>函数式不算阳春白雪，其实你一直在用了。</div><div>世界上的是，无论你想做什么，无非是把一些东西变成另一些东西，这就是函数式编程的世界观。</div><div>只是你不习惯把这种思维用到程序中而已。</div><div>你总是想告诉计算机，先这样，再这样，然后那样。</div><div>所以如果你真正希望理解函数式，关键是观念的转变&mdash;&mdash;你必须完全抛弃先后的想法。</div><div>&nbsp;</div>]]></description>
      <category>2903</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>F#学习之路(7)集合类型</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4683.shtml</link>
      <pubDate>2 Jul 2010 16:34:11</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4683.shtml</guid>
      <description><![CDATA[<div>上一篇博客，介绍了<a href="http://www.cnblogs.com/lvxuwen/archive/2008/09/06/1283678.html"><font color="#075db3">列表类型</font></a>，本篇将介绍数组类型Array、字典类型(Map)，以及可变数组(ResizeArray)、Set类型。<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一、数组类型 (Array)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数组类型，在语义上表示一组相同类型的集合。这个跟列表(List)相似，两者的区别在于列表类型数据元素不可变，而数组类型可以。虽然数组类型随机访问，在查询访问上性能优先列表，但列表在变更集合(增加、删除集合元素)上有更好的性能。这个跟大多数语言是相似的。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义数组类型的语法，跟列表也很相似，区别在于数组多了两个&quot;|&quot;符合。</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;arr=[</span><span style="color: #000000">|</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">|</span><span style="color: #000000">]<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;jaggedArr=[</span><span style="color: #000000">|</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [</span><span style="color: #000000">|</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">|</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [</span><span style="color: #000000">|</span><span style="color: #800080">3</span><span style="color: #000000">;</span><span style="color: #800080">4</span><span style="color: #000000">;</span><span style="color: #800080">5</span><span style="color: #000000">|</span><span style="color: #000000">]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000">|</span><span style="color: #000000">]</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr为一维数组，类型为int array。jaggedArr数组为int array array</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F#数组与c#很相似，有两种类别的数组，一种叫矩形(rectangle)数组，另一种叫锯齿(jagged)数组</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;矩形数组，在数字意义上，就是矩阵(matrix)，一维数组也叫矢量或向量(vector)。注意锯齿数组内嵌的数组长度不相等。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在F#中共定义了三个模块来处理数组类型。Array,Array2,Array3，分别用来处理一维、二维、三维数组。</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">#</span><span style="color: #000000">light<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;a=Array2.create&nbsp;</span><span style="color: #800080">10</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">&nbsp;<br />Array2.iteri&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i&nbsp;j&nbsp;item</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">no&nbsp;%d,%d&nbsp;:%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;i&nbsp;j&nbsp;item)&nbsp;a<br /><br />System.Console.ReadKey(</span><span style="color: #0000ff">true</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;ignore</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a类型为int [,]，是一个二维数组。</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;a=Array2.create&nbsp;</span><span style="color: #800080">10</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">20</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">&nbsp;<br />a.[</span><span style="color: #800080">5</span><span style="color: #000000">,</span><span style="color: #800080">5</span><span style="color: #000000">]</span><span style="color: #000000">&lt;-</span><span style="color: #800080">8</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />Array2.iteri&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i&nbsp;j&nbsp;item</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">no&nbsp;%d,%d&nbsp;:%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;i&nbsp;j&nbsp;item)&nbsp;a&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;arr=[</span><span style="color: #000000">|</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">;</span><span style="color: #800080">4</span><span style="color: #000000">|</span><span style="color: #000000">]<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;arr.[</span><span style="color: #800080">0</span><span style="color: #000000">..</span><span style="color: #800080">2</span><span style="color: #000000">]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;c=[</span><span style="color: #000000">|</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #000000">|</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">|</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #000000">|</span><span style="color: #800080">3</span><span style="color: #000000">;</span><span style="color: #800080">4</span><span style="color: #000000">;</span><span style="color: #800080">5</span><span style="color: #000000">|</span><span style="color: #000000">]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;(c.[</span><span style="color: #800080">1</span><span style="color: #000000">].[</span><span style="color: #800080">2</span><span style="color: #000000">])</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从上面的代码可以看出，F#除支持与c#类似的访问方法外，还对一维数组支持范围区间访问语法。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二、可变数组类型(ResizeArray)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResizeArray类型，只是.net 类型 System.Collections.Generic.List泛型类型的别名。ResizeArray长度可变，数据元素可变，很显然这个类型难以保证线程安全，应优先使用F#的List类型。</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;b=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ResizeArray&lt;_&gt;()<br />b.AddRange(seq{</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">i})<br />b.[</span><span style="color: #800080">5</span><span style="color: #000000">]</span><span style="color: #000000">&lt;-</span><span style="color: #800080">8</span><span style="color: #000000"><br />b.ForEach((</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;i))</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三、键值对类型Map。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map类型，不同于.net的System.Collections.Generic.Dictionary类型，Map类型是不可变类型。</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;m=Map.add&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">1</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;Map.empty<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;v&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;<br />&nbsp;&nbsp;printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;v<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;n=Map.of_list&nbsp;[</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;key&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;yield&nbsp;key,key.ToString()]<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />n&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;Map.iter&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;key&nbsp;value&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d&nbsp;%s</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;key&nbsp;value)</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上面的代码可以看出Map.add函数创建Map类型比较麻烦，通过of_list，of_array,of_seq等函数创建字典比较方便。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四、Set类型</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set类型，不同于List之处，在于集合中数据是唯一的，不存在两条相等的数据成员。</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">&nbsp;Set.of_list&nbsp;[</span><span style="color: #800000">&quot;</span><span style="color: #800000">1</span><span style="color: #800000">&quot;</span><span style="color: #000000">;</span><span style="color: #800000">&quot;</span><span style="color: #800000">2</span><span style="color: #800000">&quot;</span><span style="color: #000000">;</span><span style="color: #800000">&quot;</span><span style="color: #800000">1</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;Set.iter&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;item&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%s</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;item)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">1&nbsp;2</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set类型，还支持两个Set类型的相交、合并，取子集合等操作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">Set.of_seq&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seq&nbsp;{</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">i})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Set.of_list&nbsp;[</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">;</span><span style="color: #800080">6</span><span style="color: #000000">]&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;&nbsp;Set.iter&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;item&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;item)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">2;4;5;7;8;9;10</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;集合在日常编程中占据了重要了位置，本文对F#集合类型的技术细节没有进行讨论。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;到本篇博客为止，已经讨论了基本类型、集合类型、元组类型、函数类型。&nbsp;记录类型，不准备专门讲解，可以阅读<a href="http://www.cnblogs.com/allenlooplee/archive/2008/07/25/1251631.html"><font color="#075db3">从c#3.0到F#</font></a>，序列seq类型，我不打算在本系列中讨论，因为不讨论计算表达式，序列无法说清。&nbsp;下一篇博客将讨论模式匹配，这样，基本上F#函数编程范式基本知识讨论完了。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接下来，我就集中研究函数式编程中一些高级特性，例如组合子，CPS,Monad。希望条件成熟，我另开一个系列来讨论。</p></div>]]></description>
      <category>2903</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>F#版本更新说明</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4682.shtml</link>
      <pubDate>2 Jul 2010 16:33:31</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4682.shtml</guid>
      <description><![CDATA[<div>&nbsp;F#CTP 1.9.6.0更正列表:&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、名称空间必须使用完全限定名打开，名称空间不可以取别名。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、在fs,fsi文件中，除注释外，第一行必须使用#light或#light &quot;off&quot;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、元组类型互操作上发生了变动。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新增了两个类型来提供互操作上的支持。TupleEnd,TupleNested，彻底解决了互操作上的不一致性。</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;tuple_7=(</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">2</span><span style="color: #000000">,</span><span style="color: #800080">3</span><span style="color: #000000">,</span><span style="color: #800080">4</span><span style="color: #000000">,</span><span style="color: #800080">5</span><span style="color: #000000">,</span><span style="color: #800080">6</span><span style="color: #000000">,</span><span style="color: #800080">7</span><span style="color: #000000">)<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;tuple_9=(</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">2</span><span style="color: #000000">,</span><span style="color: #800080">4</span><span style="color: #000000">,</span><span style="color: #800080">8</span><span style="color: #000000">,</span><span style="color: #800080">16</span><span style="color: #000000">,</span><span style="color: #800080">32</span><span style="color: #000000">,</span><span style="color: #800080">64</span><span style="color: #000000">,</span><span style="color: #800080">128</span><span style="color: #000000">)&nbsp;<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;tuple_7_1=(</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">2</span><span style="color: #000000">,</span><span style="color: #800080">4</span><span style="color: #000000">,</span><span style="color: #800080">8</span><span style="color: #000000">,</span><span style="color: #800080">16</span><span style="color: #000000">,</span><span style="color: #800080">32</span><span style="color: #000000">,(</span><span style="color: #800080">64</span><span style="color: #000000">,</span><span style="color: #800080">128</span><span style="color: #000000">))</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对应的c#签名:&nbsp;&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Microsoft.FSharp.Core.Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;Microsoft.FSharp.Core.TupleEnd&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&nbsp;tuple_7&nbsp;{&nbsp;get;&nbsp;}&nbsp;<br /><br />public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Microsoft.FSharp.Core.Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;Microsoft.FSharp.Core.TupleEnd&lt;Microsoft.FSharp.Core.Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;&nbsp;tuple_7_1&nbsp;{&nbsp;get;&nbsp;}&nbsp;<br /><br />public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Microsoft.FSharp.Core.Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;Microsoft.FSharp.Core.TupleNested&lt;Microsoft.FSharp.Core.Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;&nbsp;tuple_9&nbsp;{&nbsp;get;&nbsp;}<br /><br /></span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C#语言如果使用以下的规则，F#语言就可以正确的识别出元组。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果元组元素个数小于7，使用Tuple泛型，下面的代码，F#可以正确的转换为(1,2,3);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">2</span><span style="color: #000000">,</span><span style="color: #800080">3</span><span style="color: #000000">)</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等于七个元素，第七个元素使用TupleEnd包装,下面的代码，F#可以正确的转换为(1,2,3,4,5,6,7)&nbsp;&nbsp;&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">net&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,TupleEnd&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;)(</span><span style="color: #800080">1</span><span style="color: #000000">,</span><span style="color: #800080">2</span><span style="color: #000000">,</span><span style="color: #800080">3</span><span style="color: #000000">,</span><span style="color: #800080">4</span><span style="color: #000000">,</span><span style="color: #800080">5</span><span style="color: #000000">,</span><span style="color: #800080">6</span><span style="color: #000000">,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TupleEnd&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">7</span><span style="color: #000000">))</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大于七个元素的元组，七个元素以上的使用TupleNested包装，下面的代码，F#可以正确的转换为(1,2,3,4,5,6,7,8)。&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;<br />&nbsp;&nbsp;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">6</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">7</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">8</span><span style="color: #000000">)))</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了给大家一个直观的映象，我给出完整的调用例子。&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先请建立一个c#类库工程，引用FSharp.Core.dll&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />using&nbsp;System;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />using&nbsp;System.Collections.Generic;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />using&nbsp;System.Linq;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />using&nbsp;System.Text;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" />using&nbsp;Microsoft.FSharp.Core;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;TestFSharpTuple<br /><img id="Codehighlighter1_143_1735_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" alt="" /><img id="Codehighlighter1_143_1735_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" style="display: none" alt="" /></span><span id="Codehighlighter1_143_1735_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_143_1735_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Class1<br /><img id="Codehighlighter1_173_1733_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_173_1733_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_173_1733_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_173_1733_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&nbsp;T1<br /><img id="Codehighlighter1_240_329_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_240_329_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_240_329_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_240_329_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_258_319_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_258_319_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;</span><span id="Codehighlighter1_258_319_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_258_319_Open_Text"><span style="color: #000000">{&nbsp;return&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">);&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&nbsp;T2<br /><img id="Codehighlighter1_405_510_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_405_510_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_405_510_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_405_510_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_423_500_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_423_500_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;</span><span id="Codehighlighter1_423_500_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_423_500_Open_Text"><span style="color: #000000">{&nbsp;return&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">6</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">7</span><span style="color: #000000">);&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleEnd&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&nbsp;T3<br /><img id="Codehighlighter1_596_730_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_596_730_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_596_730_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_596_730_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_614_720_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_614_720_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get&nbsp;</span><span id="Codehighlighter1_614_720_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_614_720_Open_Text"><span style="color: #000000">{&nbsp;return&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleEnd&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">6</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TupleEnd&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">7</span><span style="color: #000000">));&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleNested&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&nbsp;T4<br /><img id="Codehighlighter1_819_1020_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_819_1020_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_819_1020_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_819_1020_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get<br /><img id="Codehighlighter1_849_1010_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_849_1010_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_849_1010_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_849_1010_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleNested&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">6</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TupleNested&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">7</span><span style="color: #000000">));<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;&nbsp;T5<br /><img id="Codehighlighter1_1121_1370_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_1121_1370_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1121_1370_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1121_1370_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get<br /><img id="Codehighlighter1_1151_1360_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_1151_1360_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1151_1360_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1151_1360_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">6</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">7</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">8</span><span style="color: #000000">)));<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" /><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;&nbsp;T6<br /><img id="Codehighlighter1_1471_1727_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_1471_1727_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1471_1727_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1471_1727_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get<br /><img id="Codehighlighter1_1501_1717_Open_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" /><img id="Codehighlighter1_1501_1717_Closed_Image"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" style="display: none" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1501_1717_Closed_Text" style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1501_1717_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;&gt;<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #800080">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">3</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">4</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">5</span><span style="color: #000000">,&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TupleNested&lt;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;&gt;(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Tuple&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">int</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;(</span><span style="color: #800080">6</span><span style="color: #000000">,</span><span style="color: #800080">7</span><span style="color: #000000">,&nbsp;</span><span style="color: #800080">8</span><span style="color: #000000">)));<br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" /></span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在F#中分别调用&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;TestFSharpTuple.Class1.T1<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;TestFSharpTuple.Class1.T2<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;TestFSharpTuple.Class1.T3<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;TestFSharpTuple.Class1.T4<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;TestFSharpTuple.Class1.T5<br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;TestFSharpTuple.Class1.T6</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;你会发现调用T2,T4均出错。T6不会出错，但可能不是你想要的结果,T6的结果为(1,2,3,4,5,(6,7,8))</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用T2时的错误截图:</p><p>&nbsp;</p><p><img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/lvxuwen/error1.jpg" width="870" height="400" /></p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用T4的错误截图:</p><p><img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/lvxuwen/error2.jpg" width="872" height="445" />&nbsp;</p><p>&nbsp;</p></div>]]></description>
      <category>2903</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
    <item>
      <title>F#学习之路(6)列表类型</title>
      <author>Myshuiyue</author>
      <link>http://qianxun.net/Post/2010/7/4681.shtml</link>
      <pubDate>2 Jul 2010 16:32:33</pubDate>
      <guid>http://qianxun.net/Post/2010/7/4681.shtml</guid>
      <description><![CDATA[<div>列表在函数式编程中占据着重要的位置。在Lisp语言中，一切皆是列表，就连函数也是列表，列表在Lisp语言中发挥到了极致。F#语言列表语法来源于Ocaml，与Haskell语言也基本一致。本文只会讲解一些常用的使用方法，要很好的掌握列表，各位朋友可以google一下相关的内容。网络上对列表讨论比较深刻的大多以Haskell语言为例（Lisp语言列表很强大，但与大多数函数式语言列表的区别太大，不好借鉴）。<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一、如何定义列表</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在F#中定义一个列表，有几个方法。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、使用字量值</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;l=[</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">]<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;emptyList=List.empty<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;lista=l&nbsp;@&nbsp;emptyList<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;listb=</span><span style="color: #800080">0</span><span style="color: #000000">::lista</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用中括号'[',']'，元素之间用分号分隔。不同于元组类型，元组使用'(',')'，元素之间使用逗号分隔。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F#中的列表是链表，列表元素必须是相同类型，列表是不可变的，因此定义后将不能改变。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F#中定义一个空列表，有三种方法。它们在使用上有一些细微的差别。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;((List.empty&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;).GetType())&nbsp;<br /><br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;((List.Empty:</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;list).GetType())&nbsp;<br /><br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;(([]:</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;list).GetType())<br /><br /></span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;列表上定义了一个 @ 操作符，用于将一个列表追加到另一个列表的尾部，生成一个新的列表。而 :: 操作符，则将一个元素添加到一个列表的首部，形成一个新的列表。注意所有操作的列表本身不会改变。这种行为类似.net的string类型。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、使用范围表达式</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;l1=[</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">10</span><span style="color: #000000">]<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;l2=[</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">2</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">]<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;l3=[</span><span style="color: #800000">'</span><span style="color: #800000">a</span><span style="color: #800000">'</span><span style="color: #000000">..</span><span style="color: #800000">'</span><span style="color: #800000">z</span><span style="color: #800000">'</span><span style="color: #000000">]</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、使用序列表达式</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;l4=[</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">10</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;&nbsp;i&gt;</span><span style="color: #800080">4</span><span style="color: #000000">&nbsp;&amp;&amp;&nbsp;i&lt;</span><span style="color: #800080">8</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000">&nbsp;yield&nbsp;i]</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关于序列将在以后的博客中讨论，序列是一种计算表达式的实现。</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二、列表比较。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%b</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">]&gt;[</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">])&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true</span><span style="color: #008000"><br /></span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%b</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">]=[</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">4</span><span style="color: #000000">])&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;列表类型可以很方便的进行值比较，要使用引用比较请使用obj.ReferenceEquals</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%b</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;(obj.ReferenceEquals([],[]))&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">true</span><span style="color: #008000"><br /></span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%b</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;(obj.ReferenceEquals([</span><span style="color: #800080">1</span><span style="color: #000000">],[</span><span style="color: #800080">1</span><span style="color: #000000">]))&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span><span style="color: #008000"><br /></span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;三、访问列表元素</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%.2f</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">.;</span><span style="color: #800080">2</span><span style="color: #000000">.].[</span><span style="color: #800080">1</span><span style="color: #000000">])&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">2.00</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;列表索引从0开始。</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四、使用列表类型属性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br />printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">10</span><span style="color: #000000">].Length)&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">10</span><span style="color: #008000"><br /></span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">].Head)&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">1</span><span style="color: #008000"><br /></span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">].Tail)&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">[2;3]</span><span style="color: #008000"><br /></span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;([</span><span style="color: #800080">1</span><span style="color: #000000">;</span><span style="color: #800080">2</span><span style="color: #000000">;</span><span style="color: #800080">3</span><span style="color: #000000">].IsEmpty)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">false</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;五、访问List模块操作列表&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><img id="Code_Closed_Image_000905"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16" style="display: none" alt="" /><img id="Code_Open_Image_000905"  align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16" style="display: inline" alt="" /><span id="Code_Closed_Text_000905" class="cnblogs_code_Collapse" style="display: none">Code</span><span id="Code_Open_Text_000905" style="display: inline"><br /><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;FSharpLearning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /></span><span style="color: #0000ff">type</span><span style="color: #000000">&nbsp;LineNo=</span><span style="color: #0000ff">int</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">type</span><span style="color: #000000">&nbsp;Order=&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{ID:</span><span style="color: #0000ff">string</span><span style="color: #000000">;No:</span><span style="color: #0000ff">string</span><span style="color: #000000">;TotalPrice:</span><span style="color: #0000ff">float</span><span style="color: #000000">;Status:OrderStatus;OrderItems:List&lt;LineNo*Product</span><span style="color: #000000">&gt;}</span><span style="color: #000000"><br /></span><span style="color: #0000ff">and</span><span style="color: #000000">&nbsp;Product&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;{ID:</span><span style="color: #0000ff">string</span><span style="color: #000000">;Name:</span><span style="color: #0000ff">string</span><span style="color: #000000">;Price:</span><span style="color: #0000ff">float</span><span style="color: #000000">}<br /></span><span style="color: #0000ff">and</span><span style="color: #000000">&nbsp;OrderStatus=<br />&nbsp;&nbsp;&nbsp;&nbsp;New<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;Readed<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;Confirmed<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;Canceled<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;Finished<br /><br />[&lt;CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)</span><span style="color: #000000">&gt;]</span><span style="color: #000000"><br /></span><span style="color: #0000ff">module</span><span style="color: #000000">&nbsp;Order&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;change_order_status&nbsp;status&nbsp;order=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{order&nbsp;</span><span style="color: #0000ff">with</span><span style="color: #000000">&nbsp;Status=status}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;sum_order_totalprice&nbsp;order=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{order&nbsp;</span><span style="color: #0000ff">with</span><span style="color: #000000">&nbsp;TotalPrice=order.OrderItems&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;List.sum_by&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;(i,product)</span><span style="color: #000000">-&gt;</span><span style="color: #000000">product.Price)}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;add_order_items&nbsp;productList&nbsp;order=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{order&nbsp;</span><span style="color: #0000ff">with</span><span style="color: #000000">&nbsp;OrderItems=productList&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;&nbsp;List.mapi&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i&nbsp;product&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">(i,product))}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;reorder&nbsp;order&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{order&nbsp;</span><span style="color: #0000ff">with</span><span style="color: #000000">&nbsp;OrderItems=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;order.OrderItems&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;&nbsp;List.sort&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;(_,i)&nbsp;(_,j)&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">compare&nbsp;i.Price&nbsp;j.Price)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;List.mapi&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i&nbsp;(_,product)&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">(i,product))&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /></span><span style="color: #0000ff">module</span><span style="color: #000000">&nbsp;ListTest=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;main&nbsp;()=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;productList=List.map3&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;id&nbsp;name&nbsp;price</span><span style="color: #000000">-&gt;</span><span style="color: #000000">{ID=id;Name=name;Price=price})&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #800000">&quot;</span><span style="color: #800000">0001</span><span style="color: #800000">&quot;</span><span style="color: #000000">;</span><span style="color: #800000">&quot;</span><span style="color: #800000">0002</span><span style="color: #800000">&quot;</span><span style="color: #000000">;</span><span style="color: #800000">&quot;</span><span style="color: #800000">0003</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;[</span><span style="color: #800000">&quot;</span><span style="color: #800000">彩电</span><span style="color: #800000">&quot;</span><span style="color: #000000">;</span><span style="color: #800000">&quot;</span><span style="color: #800000">冰箱</span><span style="color: #800000">&quot;</span><span style="color: #000000">;</span><span style="color: #800000">&quot;</span><span style="color: #800000">PDA</span><span style="color: #800000">&quot;</span><span style="color: #000000">]&nbsp;[</span><span style="color: #800080">4000</span><span style="color: #000000">.;</span><span style="color: #800080">3050</span><span style="color: #000000">.;</span><span style="color: #800080">3000</span><span style="color: #000000">.]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;order={ID=</span><span style="color: #800000">&quot;</span><span style="color: #800000">0001</span><span style="color: #800000">&quot;</span><span style="color: #000000">;No=</span><span style="color: #800000">&quot;</span><span style="color: #800000">20080904</span><span style="color: #800000">&quot;</span><span style="color: #000000">;&nbsp;Status=New;TotalPrice=</span><span style="color: #800080">0</span><span style="color: #000000">.;OrderItems=[]}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;order=order&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;&nbsp;Order.add_order_items&nbsp;productList&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;order=Order.sum_order_totalprice&nbsp;order<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;order=order&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;Order.reorder<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;order=Order.change_order_status&nbsp;Readed&nbsp;order<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;order<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;System.Console.ReadKey(</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span style="color: #000000">|</span><span style="color: #000000">&gt;ignore<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;main()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /></span></span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上面的代码，使用namespace定义了一个FSharpLearning名称空间,使用type给int类型取了一个更有意义的名称LineNO。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并且使用type定义了一个Order记录类型和Product记录类型，以及OrderStatus联合类型。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;之后使用module定义了一个子模块Order，并且这里使用[&lt;CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)<span style="color: #000000">&gt;]标注了Order模块。并告诉编译器在Order模块名后面加上Module作为模块名。前面说过顶层作用域不允许重名。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Order模块中定义了几个函数，用来操作Order记录类型。之后，我们在ListTest模块中分别调用了这些定义的函数。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List模块中函数较多，主要介绍三个,其它函数使用方法类似。</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List.iteri函数类型为(int-&gt;'a-&gt;unit)-&gt;'a list-&gt;unit</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000"><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;numbers=[</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;i]<br />numbers&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;List.iteri&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i&nbsp;num&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">index&nbsp;%d:%d</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;i&nbsp;num)</span></div><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&gt;前向管道操作符。上面的字法等价于List.iteri (fun i num -&gt;printfn &quot;index %d:%d&quot; i num) numbers</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List.iteri带有索引，还有一个List.iter不带索引，通常这两个函数用来遍历列表。</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;number=[</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">i]<br /><br />numbers&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;List.map&nbsp;(</span><span style="color: #0000ff">fun</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">-&gt;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;i)&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%A</span><span style="color: #800000">&quot;</span></div><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List.map的函数类型为('a-&gt;'b)-&gt;'a list-&gt;'b list</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map函数通常用来操作列表中每个元素，生成新的列表。&nbsp;</p><p>&nbsp;</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;numbers=[</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">i]<br /><br />numbers&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;&nbsp;List.reduce_left&nbsp;(+)&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&gt;&nbsp;printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%d</span><span style="color: #800000">&quot;</span></div><p>&nbsp;</p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List.reduce_left函数类型为('a-&gt;'a-&gt;'a)-&gt;'a list -&gt;'a</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reduce_left函数从左到右依次取出列表中两个元素操作。通常称为归约。</span></p><p>&nbsp;</p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;六、列表与模式匹配</span></p><p><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总结：</p><div class="cnblogs_code"><!--<br  /><br  />Code highlighting produced by Actipro CodeHighlighter (freeware)<br  />http://www.CodeHighlighter.com/<br  /><br  />--><span style="color: #000000">#</span><span style="color: #000000">light<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;numbers=[</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">..</span><span style="color: #800080">100</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">&nbsp;i]<br /><br /></span><span style="color: #0000ff">let</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">rec</span><span style="color: #000000">&nbsp;print&nbsp;numbers=<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">match</span><span style="color: #000000">&nbsp;numbers&nbsp;</span><span style="color: #0000ff">with</span><span style="color: #000000">&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">[]</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%s</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">&quot;&quot;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">[a]</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%s</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;a)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">a::b&nbsp;</span><span style="color: #000000">-&gt;</span><span style="color: #000000">printfn&nbsp;</span><span style="color: #800000">&quot;</span><span style="color: #800000">%s</span><span style="color: #800000">&quot;</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;a);print&nbsp;b<br /><br />print&nbsp;numbers<br /><br /></span><span style="color: #0000ff">do</span><span style="color: #000000">&nbsp;System.Console.ReadKey(</span><span style="color: #0000ff">true</span><span style="color: #000000">)</span><span style="color: #000000">|</span><span style="color: #000000">&gt;ignore<br /><br /></span></div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、列表用于表示相同类型的一组数据的集合，在F#中大数据量集合类型应优先使用seq序列，因为序列是惰性的。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、列表是一个combinator,列表的类型定义为:</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type 'a list=</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|([])</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|( :: ) of 'a *'a list</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个[1;2;3]的列表本质上是1::2::3::[]，最具体的说是op_Cons(1,op_Cons(2,op_Cons(3,op_Nil)))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op_Nil是[]的操作符名，op_Cons是::的操作符名。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一个列表可以看作第一个元素（称为首部Head)与后面所有元素(称为尾部Tail)的组合。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样两个操作构成了列表的灵魂，深入研究组合子非常必要。</p></div>]]></description>
      <category>2903</category>
      <dc:date.Taken>2010-7-31 4:59:56</dc:date.Taken>
    </item>
  </channel>
</rss>