版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
ASP.NET4.0MVC敏捷開發(fā)給力起飛注:因內(nèi)容過長上傳受限制,本文檔只顯示部分內(nèi)容,完整版文檔請下載此文檔后留言謝謝。目錄\h第1章ASP.NET的世界\h1.1ASP.NET的來世今生\h1.1.1ASP.NET技術(shù)及其發(fā)展過程\h1.1.2ASP.NET設(shè)計目標(biāo)\h1.2ASP.NET的第一堂課\h1.2.1ASP.NET控件概述\h1.2.2HelloASP.NET\h1.3伴您成長\h1.3.1您從本章學(xué)到了什么\h1.3.2蛋糕加點奶油,咖啡加點糖\h1.3.3下一步做什么\h第2章ASP.NET編程基礎(chǔ)\h2.1兵器篇——.NET集成開發(fā)環(huán)境VisualStudio2010\h2.1.1VisualStudio2010的安裝\h2.1.2常用功能窗口介紹\h2.1.3幫助系統(tǒng)\h2.2內(nèi)功篇——C#語言基礎(chǔ)\h2.2.1C#簡介\h2.2.2C#的數(shù)據(jù)類型\h2.2.3變量和常量\h2.2.4流程控制\h2.2.5C#面向?qū)ο缶幊蘚h2.2.6C#4.0新特性\h2.3.NET框架\h2.3.1公共語言運行時(CLR)\h2.3.2微軟中間語言(MSIL)\h2.4.NET框架4.0新特性\h2.5伴您成長\h2.5.1您從本章學(xué)到了什么\h2.5.2蛋糕加點奶油,咖啡加點糖\h2.5.3下一步做什么\h第3章ASP.NET與數(shù)據(jù)庫\h3.1數(shù)據(jù)庫技術(shù)\h3.2數(shù)據(jù)庫產(chǎn)品\h3.2.1SQLServer\h3.2.2Access\h3.3ADO.NET數(shù)據(jù)訪問\h3.3.1數(shù)據(jù)訪問概述\h3.3.2ADO.NET\h3.4數(shù)據(jù)訪問控件\h3.4.1數(shù)據(jù)源控件\h3.4.2數(shù)據(jù)綁定控件\h3.5伴您成長\h3.5.1您從本章學(xué)到了什么\h3.5.2蛋糕加點奶油,咖啡加點糖\h3.5.3下一步做什么\h第4章LINQ技術(shù)\h4.1LINQ基礎(chǔ)\h4.1.1什么是LINQ\h4.1.2LINQ功能構(gòu)建模塊簡介\h4.2LINQ詳細(xì)介紹\h4.2.1LINQToObjects\h4.2.2LINQToSQL\h4.2.3LINQToXML\h4.3ADO.NETEntityFramework\h4.3.1ADO.NETEntityFramework簡介\h4.3.2LINQToEntities\h4.4LINQ數(shù)據(jù)映射\h4.4.1表和實體類\h4.4.2字段和屬性\h4.4.3實體類關(guān)聯(lián)\h4.4.4數(shù)據(jù)訪問\h4.5LINQ與存儲過程\h4.6LINQ并發(fā)與事務(wù)處理\h4.6.1并發(fā)問題\h4.6.2事務(wù)處理\h4.7伴您成長\h4.7.1您從本章學(xué)到了什么\h4.7.2蛋糕加點奶油,咖啡加點糖\h4.7.3下一步做什么\h第5章ASP.NETMVCFramework\h5.1MVC基礎(chǔ)\h5.1.1什么是MVC\h5.1.2MVC特性\h5.2ASP.NETMVC介紹\h5.2.1ASP.NETMVC:模型(Model)\h5.2.2ASP.NETMVC:視圖(View)\h5.2.3ASP.NETMVC:控制器(Controller)\h5.2.4MVC設(shè)計模式的擴展\h5.3ASP.NETMVC詳細(xì)內(nèi)容\h5.3.1URL路由規(guī)則\h5.3.2了解控制器類\h5.3.3Action方法及參數(shù)\h5.3.4視圖引擎\h5.3.5模型與數(shù)據(jù)庫\h5.3.6參數(shù)傳遞\h5.4ASP.NETMVC舉例\h5.4.1創(chuàng)建ASP.NETMVC項目\h5.4.2在控件器中添加Action方法\h5.4.3添加視圖\h5.4.4編譯運行\(zhòng)h5.5伴您成長\h5.5.1您從本章學(xué)到了什么\h5.5.2蛋糕加點奶油,咖啡加點糖\h5.5.3下一步做什么\h第6章實例:用LINQ和MVC開發(fā)網(wǎng)上商店\h6.1創(chuàng)辦網(wǎng)上商店\h6.1.1給網(wǎng)店取個名——靈客\h6.1.2靈客有什么功能\h6.1.3讓我們開始吧\h6.2開始編程,跑起來再說\h6.2.1創(chuàng)建ASP.NETMVC應(yīng)用程序\h6.2.2創(chuàng)建數(shù)據(jù)庫\h6.2.3跑起來再說\h6.3商品維護\h6.3.1創(chuàng)建Product表\h6.3.2添加LINQ類\h6.3.3商品維護\h6.3.4給Product表添加字段\h6.4東西有點亂,來個分類顯示\h6.4.1添加Category表,更新LINQ類\h6.4.2添加分類\h6.4.3分類顯示商品\h6.5東西太多記不住,讓購物車來幫您\h6.5.1創(chuàng)建購物車\h6.5.2將東西放入購物車\h6.5.3查看購物車內(nèi)的東西\h6.6買了東西總要付錢吧\h6.6.1獲得訂單\h6.6.2在付賬頁面顯示購物車中的內(nèi)容\h6.7幫您把東西送到家\h6.7.1查看發(fā)貨訂單\h6.7.2設(shè)置發(fā)貨狀態(tài)\h6.8給商店請個管家\h6.8.1添加管理員和用戶注冊\h6.8.2前臺用戶登錄控制\h6.8.3后臺管理員登錄控制\h6.9伴您成長\h6.9.1您從本章學(xué)到了什么\h6.9.2蛋糕加點奶油,咖啡加點糖\h6.9.3下一步做什么\h第7章實例:用LINQ和MVC開發(fā)博客系統(tǒng)\h7.1關(guān)于博客\h7.1.1現(xiàn)實中的博客\h7.1.2關(guān)于博客的開發(fā)\h7.2從分析做起\h7.2.1使用場景分析\h7.2.2實體分析\h7.3設(shè)計\h7.3.1架構(gòu)設(shè)計\h7.3.2存儲設(shè)計\h7.3.3功能設(shè)計\h7.4實現(xiàn)\h7.4.1建立項目\h7.4.2建立數(shù)據(jù)庫\h7.4.3生成MVC模型\h7.4.4編寫控制器并建立視圖\h7.5伴您成長\h7.5.1您從本章學(xué)到了什么\h7.5.2蛋糕加點奶油,咖啡加點糖\h7.5.3下一步做什么\h附錄AASP.NET學(xué)習(xí)資源\h附錄BSQLServer2005安裝指南\h附錄C.NET框架類庫介紹\h附錄D如何保護ASP.NET應(yīng)用程序\h附錄EPetShop解析第1章
ASP.NET的世界眾所周知,Internet已經(jīng)滲入到人們生活的每一個角落,世界因Internet而變小。不知道從什么時候起,人們已經(jīng)習(xí)慣了從網(wǎng)絡(luò)中去了解、認(rèn)識這個世界。很難想象,如果突然失去了網(wǎng)絡(luò),世界將會發(fā)生什么樣的改變。人們在學(xué)習(xí)一項新知識的時候,往往會為自己制定一個學(xué)習(xí)目標(biāo),而不是漫無目的地游走于知識的沙漠。在本書的學(xué)習(xí)過程中,筆者將陪伴讀者一起從ASP.NET的基礎(chǔ)出發(fā),點點滴滴逐步積累,以構(gòu)建一個基于ASP.NETWeb技術(shù)的網(wǎng)上商店系統(tǒng)和一個基于ASP.NETMVC技術(shù)的網(wǎng)絡(luò)博客系統(tǒng)作為本書ASP.NET之旅的目的地。通過這個邊動手邊學(xué)習(xí)的過程,讀者將能熟練地掌握ASP.NET開發(fā)所需的基礎(chǔ)知識,并能學(xué)會如何開發(fā)自己的Web應(yīng)用程序。要學(xué)習(xí)好一門軟件開發(fā)技術(shù)或者語言,首先應(yīng)該是對這門技術(shù)有一個總體的認(rèn)識,知道它能做什么,然后才是怎么做的問題。因此,本章作為本書的第1章,將首先為讀者介紹ASP.NET技術(shù)的發(fā)展情況,讓讀者對ASP.NET有一個總體的認(rèn)識。通過閱讀本章,讀者還將了解到ASP.NET技術(shù)的設(shè)計目標(biāo),知道使用ASP.NET能夠開發(fā)出什么樣的軟件系統(tǒng),并將在本章的引導(dǎo)下親自實現(xiàn)一個使用ASP.NET技術(shù)開發(fā)的“HelloWorld”Web應(yīng)用程序。接下來,就請讀者跟隨筆者一起漫游ASP.NET的世界,開始ASP.NET之旅。1.1ASP.NET的來世今生小提示“ASP.NET到底是什么?我能用它來做些什么的呢?它和以前的ASP之間有什么關(guān)系?……”對于經(jīng)常在網(wǎng)上購買書籍的讀者,一定不會對“當(dāng)當(dāng)網(wǎng)”感到陌生,是的,“當(dāng)當(dāng)網(wǎng)”就是采用了ASP.NET技術(shù)開發(fā)構(gòu)建的。當(dāng)然,作為ASP.NET的創(chuàng)始者——Microsoft公司旗下的絕大多數(shù)網(wǎng)站也都是采用ASP.NET技術(shù)開發(fā)的。不僅如此,如今很多互聯(lián)網(wǎng)網(wǎng)站以及面向企業(yè)的Web應(yīng)用系統(tǒng)都采用了ASP.NET技術(shù),ASP.NET已經(jīng)成為Web開發(fā)領(lǐng)域中最為重要的力量之一,它最明顯的標(biāo)志就是Web頁面的后綴名為aspx。同時,Microsoft公司為開發(fā)人員使用ASP.NET進行Web開發(fā)提供了大量的工具和技術(shù)支持,并且學(xué)習(xí)ASP.NET技術(shù)的門檻非常低,使得初學(xué)者能夠很快地掌握基本的Web開發(fā)技術(shù),使開發(fā)人員能夠快速地、便捷地實施開發(fā)。有了Microsoft這個軟件業(yè)界巨人的支持,以及我們身邊很多成功實施的案例,無一不證明選擇ASP.NET來進行Web開發(fā)的正確性。在開始學(xué)習(xí)ASP.NET之前,讀者還是需要對ASP.NET技術(shù)的發(fā)展過程有一個大概的了解。下面的兩小節(jié)就會解開ASP.NET的身世之謎。1.1.1ASP.NET技術(shù)及其發(fā)展過程ASP.NET是大名鼎鼎的Microsoft公司推出的一款以.NETFramework為基礎(chǔ)平臺的動態(tài)Web開發(fā)技術(shù)。Microsoft公司將傳統(tǒng)的ASP(ActiveServerPages)動態(tài)Web開發(fā)技術(shù)與.NETFramework相結(jié)合,使得開發(fā)人員能夠快速、高效、敏捷地開發(fā)出可靠的Web應(yīng)用程序。同時,ASP.NET也并不是ASP的簡單升級,它使用.NETFramework中的各種服務(wù)器端編譯型語言,例如C#,VB.NET等,并支持WebForm、.NET服務(wù)器控件、ADO.NET、LINQ等高級特性。隨著Microsoft公司不斷地對.NET平臺進行擴充和完善,如今的ASP.NET已成為Web開發(fā)領(lǐng)域最重要的服務(wù)器端平臺技術(shù)之一。一口氣說了這么多,讀者也許暈頭轉(zhuǎn)向、不甚明白。沒關(guān)系,讀者現(xiàn)在只需要知道ASP.NET是一項以.NETFramework為基礎(chǔ)的Web開發(fā)技術(shù)就可以了,其余的內(nèi)容就在本書的帶領(lǐng)下,慢慢領(lǐng)會吧。不用問,讀者的下一個問題肯定是:什么是.NETFramework呢?.NETFramework是Microsoft為開發(fā)應(yīng)用程序而創(chuàng)建的富有革命性的新平臺。.NETFramework可以創(chuàng)建Windows應(yīng)用程序、Web應(yīng)用程序(當(dāng)然是指ASP.NET)、Web服務(wù)和其他各種類型的應(yīng)用程序。似乎越說越復(fù)雜了,那仍然請讀者將這個概念暫時拋到一邊,就記住開發(fā)ASP.NET要借助一個叫.NETFramework的東西吧,其他的還是交給本書后面的學(xué)習(xí)。最新的.NETFramework版本是.NETFramework4.0,Microsoft公司為它進一步改進和添加了控件,并新加入了LINQ技術(shù)、SEO(SearchEngineOptimization,搜索引擎優(yōu)化)和輸出緩存等新功能,本書的介紹也將基于這個最新版本。1.1.2ASP.NET設(shè)計目標(biāo)隨著以Internet和局域網(wǎng)為代表的網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,以B/S(Browser/Server)模式架構(gòu)的分布式應(yīng)用逐步與C/S(Client/Server)模式架構(gòu)并駕齊驅(qū),并在系統(tǒng)應(yīng)用中顯示出了越來越重要的作用。另外,現(xiàn)在業(yè)界引起廣泛討論和關(guān)注的“云計算”概念的提出,使得Web開發(fā),特別是Web2.0進入了一個全新的時代。因此,不論是企業(yè)級的Web應(yīng)用程序,還是各種類型網(wǎng)站的Web開發(fā),已經(jīng)成為了軟件開發(fā)人員的一項重要工作和研究方向。正是在這樣巨大的市場需求推動之下,.NET平臺及其ASP.NET技術(shù)得到了長足的發(fā)展和廣泛的應(yīng)用。敏捷,是現(xiàn)代軟件開發(fā)的新思想。所謂敏捷開發(fā),就是以盡可能簡單的方式,通過對團隊有效的組織,以業(yè)務(wù)需求為驅(qū)動,盡早并持續(xù)性地交付有價值的軟件讓客戶滿意。ASP.NET的各個版本均是以簡化開發(fā)人員的工作為設(shè)計目標(biāo)的核心,并不斷創(chuàng)新和豐富其自身內(nèi)容,使開發(fā)人員能在最短的時間內(nèi)開發(fā)出優(yōu)秀的Web應(yīng)用程序。作為最新版本的ASP.NET4.0對以前版本做出了進一步的擴充,為開發(fā)人員提供了強大的功能。ASP.NET將許多后臺代碼進行了封裝,大大提高了開發(fā)效率,使開發(fā)人員可以將更多的注意力集中到業(yè)務(wù)邏輯的實現(xiàn)上去,改變了以前需要編寫許多復(fù)雜的底層代碼的狀況。并且,隨著.NET平臺和ASP.NET版本的不斷更新,對項目和代碼的管理維護工作也變得更加容易。性能,是關(guān)系到一個項目成敗的關(guān)鍵因素,Microsoft公司的技術(shù)人員通過優(yōu)化.NET內(nèi)部的處理機制,擴展高速緩存機制,并在.NET2.0版本增加了對64位服務(wù)器的支持,充分提升了ASP.NET的性能,以適應(yīng)企業(yè)級的需求??傊?,ASP.NET的設(shè)計目標(biāo)就是為開發(fā)人員提供最為簡化的開發(fā)技術(shù)和平臺,為快速實現(xiàn)業(yè)務(wù)的開發(fā)提供支持。休息一下如果讀者是一位軟件開發(fā)的初學(xué)者,或許對以上提到的C/S模式、B/S模式、高速緩存機制等術(shù)語還不太熟悉,對ASP.NET和.NET也會感到很陌生。其實,這并沒有關(guān)系,讀者只需要對以上提到的內(nèi)容有一個初步的印象就可以了?;仡櫣P者學(xué)習(xí)軟件開發(fā)的經(jīng)歷,在第一次接觸到C++的時候,同樣對宏、頭文件、指針等概念一頭霧水,當(dāng)時只能將這些術(shù)語默默記在腦中,隨著學(xué)習(xí)的深入和不斷的探索、應(yīng)用,回過頭來再看到這些術(shù)語時,看似神秘的面紗已經(jīng)不在了。最開始學(xué)習(xí)編程的時候總是比較枯燥的,放松一下心情,窗外的陽光很燦爛。1.2ASP.NET的第一堂課在對ASP.NET的發(fā)展過程和其設(shè)計目標(biāo)有了初步認(rèn)識之后,讀者一定迫不急待想要親自嘗試一下,比如開發(fā)一個小小的ASP.NET程序。不過,在這之前,讀者還需要先來認(rèn)識一下開發(fā)ASP.NETWeb應(yīng)用程序會用到的一些常用控件,這些控件在今后的實際開發(fā)中會頻繁用到。1.2.1ASP.NET控件概述ASP.NET控件是一組可以復(fù)用的組件,.NET為我們提供了各種功能的控件。如圖1-1所示,它們可以是呈現(xiàn)在瀏覽器端的Web頁面元素,可以是諸如SqlDataSource,LinqDataSource等的數(shù)據(jù)訪問控件,也可以是Web頁面驗證控件等??丶梢皂憫?yīng)事件,獲取或者設(shè)置屬性,大多數(shù)控件都是在服務(wù)器端進行處理的。在此,首先介紹一下標(biāo)準(zhǔn)的服務(wù)器端Web控件。圖1-1.NET功能控件Web服務(wù)器控件主要有兩種類型:標(biāo)準(zhǔn)的Web控件和HTML服務(wù)器控件。其中,HTML服務(wù)器控件是指添加了runat="server"屬性的HTML元素,例如<inputrunat="server"/>;而Web控件是指標(biāo)記類似于<asp:button/>的Web服務(wù)器控件,本節(jié)主要介紹服務(wù)器端Web控件。在一個Web頁面中,按鈕(Button)、下拉菜單(DropDownList)、文本框(TextBox)和圖片(Image)是最為常見的元素。用戶使用這些Web頁面元素進行數(shù)據(jù)的讀取、輸入和事件的觸發(fā)。在ASP.NET中,VisualStudio開發(fā)平臺為用戶提供了這些常用的Web控件,它們位于工具箱中,如圖1-2所示。圖1-2工具箱中的Web控件讀者可以用鼠標(biāo)將工具欄中的控件拖放至設(shè)計窗口中,VisualStudio會自動生成相應(yīng)的HTML標(biāo)簽。表1-1中列舉了一些最常用、最簡單的Web控件。表1-1常用的Web控件控件有著各種屬性,以Button控件的部分常用屬性為例對其進行說明,如表1-2所示。表1-2Button控件的常用屬性控件除了上述介紹的屬性以外,還包含了若干事件。開發(fā)人員定義事件和事件發(fā)生時所需執(zhí)行的代碼,然后通過委托機制和事件相綁定。至于什么是委托和事件,稍后為讀者介紹。小提示■作為一名使用ASP.NET的Web開發(fā)人員,應(yīng)該熟悉ASP.NET所提供的各個控件的功能和屬性,盡管它們中的某些不是十分常用?!鲩_發(fā)人員也應(yīng)該對HTML和JavaScript有充分的了解,因為它們會在開發(fā)過程中時常出現(xiàn)。■開發(fā)人員應(yīng)該了解并掌握ASP.NET各個控件的編譯、運行狀態(tài),對于某些使用HTML客戶端控件就能解決的問題,則不應(yīng)該選用服務(wù)器端控件,以便減少服務(wù)器的壓力。1.2.2HelloASP.NET讀者一定是迫不及待地想要親自編寫一段ASP.NET應(yīng)用程序了,下面就請讀者一起來實現(xiàn)一個ASP.NET的“HelloASP.NET”程序。在此之前,讀者應(yīng)當(dāng)已經(jīng)成功安裝了VisualStudio2010和.NETFramework4.0,不熟悉具體安裝過程的讀者可以翻到第2章,先閱讀安裝的介紹。需要注意的是,本書的案例均是以中文版VisualStudio2010TeamSystem作為開發(fā)平臺的。01新建一個ASP.NET網(wǎng)站。在VisualStudio的菜單中選擇“文件”→“新建”→“網(wǎng)站”命令,如圖1-3所示。圖1-3新建一個網(wǎng)站命令02在新彈出窗口中選擇“ASP.NET網(wǎng)站”選項,并在位置文本框的創(chuàng)建路徑中將“WebSite1”改為“HelloASP.NET”,語言選擇“VisualC#”。表示要以.NETFramework4.0為基礎(chǔ)在對應(yīng)文件系統(tǒng)路徑下建立一個叫做“HelloASP.NET”的網(wǎng)站,最后單擊“確定”按鈕,如圖1-4所示。圖1-4新建一個網(wǎng)站創(chuàng)建好網(wǎng)站之后,VisualStudio會在網(wǎng)站項目下自動生成一個名為Default.aspx的ASP.NET頁面(ASP.NET頁面總是以aspx為后綴名),一個Web.Config配置文件和一個App_Data文件夾??梢酝ㄟ^解決方案資源管理器(SolutionExplorer)對項目文件進行查看,如圖1-5所示。圖1-5解決方案資源管理器03現(xiàn)在可以進行程序的開發(fā)了。VisualStudio2010為用戶提供了3種不同的視圖,分別是“設(shè)計”、“拆分”和“源”,讀者可以選中“拆分”選項卡,這樣就可以同時呈現(xiàn)出頁面設(shè)計和HTML源兩個視圖,方便開發(fā)人員對頁面進行控制。然后,從工具欄中依次選擇Label,TextBox和Button控件,拖放入“源”視圖中的<div></div>標(biāo)簽內(nèi),VisualStudio會自動生成相應(yīng)的代碼,如圖1-6所示。圖1-6生成代碼在“源”視圖中,可以清晰地看到上一小節(jié)介紹的控件及其屬性。例如在Label控件中,其包含了ID屬性,并將其設(shè)置為Label1,它表明這個Label控件的唯一身份;它還包含了runat屬性,說明這個Label控件是一個服務(wù)器端的Web控件;最后Label在頁面上默認(rèn)的顯示值是Label。04最后對這3個控件進行一個最簡單的程序編寫。這里要實現(xiàn)的功能就是在TextBox控件中輸入“HelloASP.NET”字符串,然后單擊Button按鈕,讓Label控件顯示為輸入的值。當(dāng)用戶在頁面中單擊Button按鈕時,會觸發(fā)一個OnClick事件,然后執(zhí)行相應(yīng)的后臺代碼。下面就來示范如何實現(xiàn)這樣一個功能。雙擊“設(shè)計”視圖里的Button按鈕,VisualStudio會在后臺CS文件里自動生成一個事件被觸發(fā)時所執(zhí)行的方法,用戶對事件發(fā)生時所要做的操作就寫在這個方法里。正如前面所述,當(dāng)用戶在TextBox控件中輸入了值,后臺程序則獲取TextBox控件的文本,將文本賦值給Label控件并做為Label控件顯示的值,代碼清單如代碼1-1所示:代碼1-105最后來看看運行的效果,單擊工具欄里的“調(diào)試”按鈕,啟動調(diào)試。注意,在第一次啟動調(diào)試時,VisualStudio會彈出如圖1-7所示的窗口,提示用戶是否在配置文件Web.config里啟動調(diào)試,這里單擊“確定”按鈕即可。圖1-7進行調(diào)試項目通過調(diào)試后,VisualStudio會啟動瀏覽器,運行這個ASP.NETWebSite應(yīng)用程序,結(jié)果如圖1-8所示。圖1-8在瀏覽器中顯示應(yīng)用程序讀者現(xiàn)在可以在TextBox控件中輸入“HelloASP.NET”,單擊Button按鈕,看看Label控件顯示的是什么,最終執(zhí)行效果如圖1-9所示。圖1-9最終執(zhí)行效果怎么樣?如此簡單的一行代碼就可以實現(xiàn)前面所描述的需求。是的,ASP.NET就是這么簡單!1.3伴您成長1.3.1您從本章學(xué)到了什么通過本章的學(xué)習(xí),讀者了解了.NET和ASP.NET技術(shù)的發(fā)展過程,知道了ASP.NET技術(shù)的設(shè)計目標(biāo),初步認(rèn)識了簡單的Web服務(wù)器控件,并親自實現(xiàn)了一個HelloASP.NETWeb應(yīng)用程序,對ASP.NET有了一個初步的印象。正如本章所述,使用ASP.NET就是為了快速、高效、敏捷地開發(fā)出Web應(yīng)用程序。與此同時,作為一個專業(yè)的Web開發(fā)人員,讀者需要掌握的知識還有很多,比如:HTML、CSS、JavaScript、C#服務(wù)器端編程技術(shù)、數(shù)據(jù)庫技術(shù)等,本章所講述的只是萬里長征的第一步。1.3.2蛋糕加點奶油,咖啡加點糖在結(jié)束本章之前,筆者再來談?wù)凙SP.NET的控件。在1.2.1節(jié)中,讀者僅認(rèn)識了幾個最基本的Web控件,現(xiàn)在就來進一步對控件進行了解。正如本章所述,控件是一組可以復(fù)用的組件,而組件是一個自包含的功能單元,擁有獨立于內(nèi)部結(jié)構(gòu)的外部接口,或者可以認(rèn)為,控件是一組被封裝好的黑盒代碼,并能按照需求被重復(fù)應(yīng)用于任意多個應(yīng)用程序中。在.NET中,控件是非常重要的一個概念,.NET不僅僅為開發(fā)人員提供了許多內(nèi)置的服務(wù)器控件,還允許開發(fā)人員根據(jù)自己的具體需求,制定用戶控件。關(guān)于用戶控件,可以將它理解為一個開發(fā)人員自定義、封裝好的Web窗體,并將該Web窗體用一個后綴名為ascx的文件和對應(yīng)的CS文件存儲起來。用戶控件不能作為一個單獨的Web窗體來運行,而是將其放入其他的Web窗體來使用,這樣就可以實現(xiàn)代碼的重用。下面我們就來實現(xiàn)一個簡單的用戶控件。首先,打開前面已經(jīng)建立好的HelloASP.NET項目,右擊解決方案資源管理器中的項目,單擊“添加新項”選項,在彈出窗口中單擊“Web用戶控件”選項,然后單擊“添加”按鈕。當(dāng)然,開發(fā)人員也可以為用戶控件重命名,但在這里,先使用默認(rèn)的“WebUserControl.ascx”,如圖1-10所示。解決方案資源管理器中會自動生成WebUserControl.ascx和WebUserControl.ascx.cs文件。從工具箱中選擇一個Label控件,拖放入WebUserControl.ascx的“源”視圖中,更改Label控件的Text屬性為“我是用戶控件”,并保存。圖1-10添加新控件更改當(dāng)前窗口到Default.aspx的“設(shè)計”視圖,將剛剛建立的用戶控件拖放入頁面中,讀者可以在“源”視圖中看到對用戶控件的引用和使用情況,代碼清單如代碼1-2所示:代碼1-2編譯并運行該窗體,可以得到最終的實現(xiàn)效果,如圖1-11所示,這就是一個簡單的用戶控件的實現(xiàn)。圖1-11實現(xiàn)用戶控件1.3.3下一步做什么講了這么多,讀者是否已經(jīng)感覺到ASP.NET應(yīng)用程序的開發(fā)并不是一件非常復(fù)雜的事情?有些性急的讀者也許已經(jīng)急不可耐,想馬上進入網(wǎng)上商店站點的開發(fā)之中。但是,正如前面所說,ASP.NET是基于.NETFramework的,因此,接下來還應(yīng)該回歸到.NET,只要認(rèn)真學(xué)完本書講述的這一點C#語言的基礎(chǔ),今后的開發(fā)就會得心應(yīng)手。休息一下在進入下一章之前,讀者應(yīng)當(dāng)去放松一下,看看其他的書籍,踢一場足球,或者出去和朋友們坐坐、聊天,談?wù)劷裉鞂W(xué)習(xí)到的ASP.NET,沒準(zhǔn)他們會認(rèn)為你很在行,Goodluck。有志向的朋友還可以看看人格心理方面的書,因為軟件開發(fā)的過程中需要和項目團隊成員進行交流,知己知彼,方能百戰(zhàn)不殆??傊?,筆者推薦讀者以勞逸結(jié)合的方式來學(xué)習(xí)本書。第2章
ASP.NET編程基礎(chǔ)通過前一章的學(xué)習(xí),相信您已經(jīng)對ASP.NET和VisualStudio2010開發(fā)平臺有了一個初步的認(rèn)識,您也許已經(jīng)希望馬上動手開發(fā)一個Web應(yīng)用系統(tǒng)或者網(wǎng)站。不過先不要著急,雖然有這么一個強大的平臺,但是沒有開發(fā)語言的支持也是“巧婦難為無米之炊”。本章首先將帶領(lǐng)您一起安裝當(dāng)前最新的.NET開發(fā)平臺VisualStudio2010,并對該平臺的操作進行簡單的介紹。然后對該平臺支持的程序開發(fā)語言C#進行講解。在這里將對C#基礎(chǔ)中最實用的知識點進行介紹,通過通俗易懂的例子介紹C#的語法并展示C#的功能,讓您能夠快速地掌握這門語言,從而進行.NET平臺下ASP.NETWeb應(yīng)用程序的開發(fā)。C#語言目前已發(fā)展到4.0版本,它內(nèi)容豐富、博大精深。對于使用C#語言進行ASP.NET開發(fā)的初學(xué)者來說,掌握C#語言是很關(guān)鍵的。本章將首先介紹基于C#2.0和C#3.0的基礎(chǔ)知識,包括數(shù)據(jù)類型、變量和常量、流程控制,另外還會介紹面向?qū)ο蟮幕A(chǔ),最后介紹C#3.0/4.0的新特性。當(dāng)然,對于有使用C#語言開發(fā)ASP.NET2.0Web應(yīng)用程序經(jīng)驗的您可以跳過本章前幾節(jié),著重關(guān)注C#3.0/4.0的新特性。本章我們還將通過CLR和MSIL展示程序在.NET平臺內(nèi)部運行的實現(xiàn)機制,讓您對.NET平臺有比較全面的理解,從中體會到這個開發(fā)平臺的優(yōu)越性。昨日,伴著深秋的陽光,我們對ASP.NET有了一個初步的認(rèn)識,您也親自實現(xiàn)了一個HelloASP.NET的示例程序。俗話說:“磨刀不誤砍柴功”,現(xiàn)在就讓我們將注意力放回到VisualStudio2010開發(fā)平臺的安裝和使用以及C#語言的基礎(chǔ)之上。說到VisualStudio2010和C#語言,浮現(xiàn)在我腦海中的是兩個詞語——兵器和內(nèi)功。在武俠小說中,武林高手們各個身懷絕技,他們的神奇經(jīng)歷影響了一代又一代的讀者。其中有的人物因為手握威力無比的絕世兵器而威震天下,例如金庸先生筆下的金毛獅王謝遜憑借一把屠龍刀行走江湖,峨嵋派掌門滅絕師太因為倚天劍而名聲大震;此外,其他擁有極其高深內(nèi)功修為的武林高手更是威名遠(yuǎn)揚,武林大俠郭靖和喬峰的降龍十八掌、英俊小生段譽的六脈神劍,明教教主張無忌的九陽神功,當(dāng)然不能忘了少林中令人敬仰的掃地僧;更甚者便是集玄鐵劍與極高內(nèi)功修為于一身的神雕俠楊過。如果把我們的程序世界比做武俠小說中的“江湖”,作為“江湖人士”的您肯定希望能夠有所作為。下面首先讓我們一起揮舞手中VisualStudio2010這件強大的兵器,然后修煉一下C#語言的內(nèi)功基礎(chǔ),為后面對網(wǎng)上商店系統(tǒng)的實現(xiàn)、為今后的“笑傲江湖”打下堅實的基礎(chǔ)。2.1兵器篇——.NET集成開發(fā)環(huán)境VisualStudio2010日后,當(dāng)修煉已成的您“行走在江湖之上”時,路人問道:“大俠,您使用的是什么兵器呢?”如果此時您不能準(zhǔn)確而精辟地描述出手中是何兵器,那豈不是讓人笑掉大牙,因此,還是首先來介紹一下您的兵器——VisualStudio2010吧。VisualStudio2010是Microsoft公司面向Windows7,Office2010以及Web2.0浪潮的新一代開發(fā)工具,代號為“Hawaii”。它是對VisualStudio2008開發(fā)環(huán)境一次及時、全面的升級。先來回顧一下VisualStudio2008的特點:VisualStudio2008在VisualStudio2005的基礎(chǔ)上引入了250多個新特性,整合了對象、關(guān)系數(shù)據(jù)及對XML數(shù)據(jù)的訪問方式。使用VisualStudio2008可以高效地進行各種應(yīng)用程序的開發(fā)。設(shè)計器中可以實時反應(yīng)變更,XML、JavaScript中智能感知功能可以提高開發(fā)效率。同時VisualStudio2008支持項目模板、調(diào)試器和部署程序,可以高效開發(fā)Web應(yīng)用,并集成了ASP.NETAJAX框架,包含了ASP.NETAJAX項目模板。同時使用它還可以高效地進行Office應(yīng)用和Mobile應(yīng)用的開發(fā)。而VisualStudio2010在VisualStudio2008的基礎(chǔ)上又新增了5大特性:支持云計算架構(gòu);Agile/Scrum開發(fā)方法;搭配Windows7與Silverlight4;發(fā)揮多核并行運算威力;更好地支持C++。同時,VisualStudio2010在以下三個方面還進行了突破創(chuàng)新。1.釋放創(chuàng)意使用VisualStudio2010,可以使用原型制作、建模和可視設(shè)計工具實現(xiàn)您的愿景。創(chuàng)造和分享您的構(gòu)想并發(fā)揮團隊的創(chuàng)意力量。創(chuàng)建任何您能想到的功能,打造敏捷的團隊,并開創(chuàng)更多的可能性。通過新的原型制作、建模和可視設(shè)計工具,您可以為Windows和Web構(gòu)建創(chuàng)新應(yīng)用程序;遇見創(chuàng)意設(shè)計的力量——與SketchFlow,MicrosoftExpression?Studio共同設(shè)計新一代使用體驗,并與TeamFoundationServer完美集成;利用多核編程和云開發(fā)工具提供的新機遇和功能。2.通過集成實現(xiàn)簡化VisualStudio2010是一個集成環(huán)境,開發(fā)人員可以使用現(xiàn)有技能建模、編碼、調(diào)試、測試和部署大量應(yīng)用程序類型。VisualStudio有助于簡化常用任務(wù)并幫助開發(fā)人員深入探索平臺。單一集成開發(fā)環(huán)境進一步考慮了您的技能因素,并按照您的工作方式進行了調(diào)整;在不離開VisualStudio2010環(huán)境的情況下,完成所有編碼、建模、測試、調(diào)試和部署工作;利用現(xiàn)有的標(biāo)準(zhǔn)和技能適應(yīng)日益增多的應(yīng)用程序類型,包括MicrosoftSharePoint?和Windows?AzureTM;通過多屏幕支持,更多的合作伙伴解決方案和功能更強的工具編輯器滿足您的多元化工作方式。3.確保代碼質(zhì)量VisualStudio2010提供了強大的工具用于管理項目、維護源代碼和發(fā)現(xiàn)Bug。測試人員和開發(fā)人員可以使用手動和自動測試,以及高級調(diào)試工具,確保以正確的方式構(gòu)建正確的應(yīng)用程序。具備主動項目管理功能的強大測試工具可幫助您以正確的方式構(gòu)建正確的應(yīng)用程序;使用新的IntelliTrace調(diào)試程序隔離應(yīng)用程序歷史記錄中的故障點;借助主動項目管理工具(包括新報告、儀表板和計劃工作表)避免問題的出現(xiàn);使用手動和自動測試工具了解您是否以正確的方式構(gòu)建了正確的應(yīng)用程序。小提示VisualStudio2010包含了4個版本:VisualStudio2010Professional,專業(yè)版、VisualStudio2010Premium,企業(yè)版、VisualStudio2010Ultimate,旗艦版和VisualStudioTestProfessional,測試人員版等,本書中采用的是VisualStudio2010簡體中文旗艦版。因此,建議您也使用這個版本的VisualStudio2010,當(dāng)然,請支持正版。下面,我們就來看看VisualStudio2010的安裝過程。2.1.1VisualStudio2010的安裝在安裝VisualStudio2010開發(fā)工具前最好先安裝Internet信息服務(wù)(IIS,InternetInformationServer)。問題又來了,那什么是IIS呢?IIS是一種Web(網(wǎng)頁)服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器,分別用于網(wǎng)頁瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。IIS作為當(dāng)今主流的Web服務(wù)器之一,提供了強大的Internet和Intranet服務(wù)功能。雖然VisualStudio2010自帶了一個Web編譯環(huán)境,可以把它看做是IIS的一個精簡版本,可以用來對開發(fā)的程序進行調(diào)試,但是最好單獨安裝IIS,這樣可以使用IIS提供的全部功能。1.在WindowsXP操作系統(tǒng)中安裝Internet信息服務(wù)(IIS)IIS在默認(rèn)情況下安裝在Windows2003Server版本中,其他版本的操作系統(tǒng)可以使用“控制面板”中的“添加或刪除程序”來安裝IIS或其他組件。安裝前在光驅(qū)中插入操作系統(tǒng)的安裝光盤。01單擊“開始”菜單中的“控制面板”命令,進入到“控制面板”窗口中,然后選中“添加/刪除程序”選項,打開“添加或刪除程序”對話框。02單擊“添加或刪除程序”對話框中左側(cè)的“添加/刪除Windows組件”選項,打開“Windows組件向?qū)А睂υ捒?,如圖2-1所示。圖2-1“Windows組件向?qū)А睂υ捒?3選中“Internet信息服務(wù)(IIS)”復(fù)選框,單擊“詳細(xì)信息”按鈕查看安裝IIS所需要的組件,如圖2-2所示。圖2-2Internet信息服務(wù)(IIS)子組件04選中需要安裝的組件,一般將所有的選項都選中。然后單擊“確定”按鈕,返回“Windows組件向?qū)А睂υ捒?,單擊“下一步”按鈕,即可開始安裝Internet信息服務(wù)(IIS),安裝界面如圖2-3所示。圖2-3IIS安裝進程05安裝完成后,單擊“完成”按鈕完成IIS的安裝過程。2.安裝VisualStudio2010旗艦版01將VisualStudio2010安裝光盤放入到計算機的光驅(qū)中,光盤運行后系統(tǒng)自動進入安裝程序界面,如圖2-4所示。該界面中共有兩個選項,分別是安裝VisualStudio2010和檢查ServiceRelease。圖2-4VisualStudio2010安裝程序界面02單擊“安裝MicrosoftVisualStudio2010”選項,安裝程序彈出如圖2-5所示的安裝向?qū)Ы缑?。圖2-5VisualStudio2010安裝向?qū)Ы缑?3單擊安裝向?qū)е械摹跋乱徊健卑粹o,安裝程序轉(zhuǎn)入到安裝程序的起始頁界面,如圖2-6所示。頁面左側(cè)顯示的是關(guān)于安裝VisualStudio2010所需的組件信息,右側(cè)顯示的是用戶許可協(xié)議。圖2-6安裝程序起始頁04選中“我已閱讀并接受許可條款”單選項,單擊“下一步”按鈕,進入安裝程序的選項界面,如圖2-7所示??梢栽谧髠?cè)選擇安裝的功能,一般情況采用默認(rèn)的選擇,也可以根據(jù)計算機存儲空間確定產(chǎn)品安裝的路徑。圖2-7安裝選項界面05完成功能選擇和安裝路徑的設(shè)置后,單擊“安裝”按鈕,進入程序的安裝界面,如圖2-8所示,頁面中顯示當(dāng)前正在安裝的組件。圖2-8安裝進度界面06安裝完成后,進入安裝程序的完成頁面,如圖2-9所示。單擊“完成”按鈕完成VisualStudio2010開發(fā)環(huán)境的安裝。圖2-9安裝程序完成頁面2.1.2常用功能窗口介紹好,在VisualStudio2010安裝完成之后,讓我們亮出自己的“兵器”,看看它有哪些用途。單擊“開始”→“所有程序”→“VisualStudio2010”→“VisualStudio2010”命令,運行VisualStudio2010,開發(fā)環(huán)境界面如圖2-10所示的VisualStudio2010起始頁。在這個頁面中包括“最近使用的項目”、“VisualStudio指南和資源”和“解決方案資源管理器”等窗體。圖2-10VisualStudio2010起始頁“最近使用的項目”中包含的項目,為開發(fā)人員訪問最近編輯過的項目提供一種快捷方式,另外在“最近使用的項目”中還提供“打開項目”和“新建項目”兩個功能?!按蜷_項目”可以選擇需要打開的C#項目,“新建項目”可以幫助您創(chuàng)建一個新的C#項目?!敖鉀Q方案資源管理器”主要用于維護和管理當(dāng)前項目中的文件。單擊圖2-10中所示的“新建項目…”后會彈出“新建項目”對話框,在其中創(chuàng)建一個新的ASP.NETWeb應(yīng)用程序。圖2-11所示為VisualStudio2010的開發(fā)環(huán)境界面,Default.aspx為網(wǎng)站默認(rèn)主頁名。圖2-11VisualStudio2010開發(fā)環(huán)境在圖2-11中,最上面的是菜單欄,顯示了所有可用的操作方式,具體如圖2-12所示。圖2-12VisualStudio2010菜單欄下面簡單介紹菜單欄中重要菜單項的常用功能?!裎募褐饕峁┬陆?、打開、保存、添加、關(guān)閉文件等操作?!窬庉嫞涸诰庉嫶a時的一些操作,如復(fù)制、粘貼、查找等?!褚晥D:用于顯示或隱藏集成開發(fā)環(huán)境的各種窗口、工具欄以及其他組成部分?!耥椖浚褐饕糜谔砑有马?、添加現(xiàn)有項、復(fù)制網(wǎng)站、添加引用、添加Web引用等操作?!裆桑褐饕糜谏删W(wǎng)站、發(fā)布網(wǎng)站等操作?!裾{(diào)試:主要用于啟動調(diào)試、開始執(zhí)行等操作?!駭?shù)據(jù):主要用于模式比較、數(shù)據(jù)比較和T-SQL編輯等操作?!窆ぞ撸褐饕糜趫?zhí)行連接到數(shù)據(jù)庫、連接到服務(wù)器等命令?!駵y試:主要用于各種測試操作,如新建測試、加載元數(shù)據(jù)文件、創(chuàng)建新測試列表等?!穹治觯褐饕糜诖a的分析,如在網(wǎng)站上進行代碼分析、代碼分析配置等操作?!翊翱冢褐饕糜诠こ讨写翱诘牟季?,包括新建窗口、拆分、浮動、可???、隱藏等操作?!駧椭禾峁椭畔?,方便用戶學(xué)習(xí)和掌握.NET的使用方法。圖2-11中菜單欄下面的就是工具欄,里面提供了可以快速訪問常用菜單命令的圖標(biāo),如圖2-13所示。圖2-13VisualStudio2010工具欄工具欄中包括了VisualStudio2010中大多數(shù)常用的命令按鈕,如“新建項目”、“保存”、“復(fù)制”、“粘貼”、“啟動調(diào)試”、“解決方案資源管理器”、“屬性窗口”、“工具箱”、“起始頁”、“命令窗口”等快捷按鈕。圖2-11的左側(cè)就是VisualStudio2010的工具箱,一般情況下是隱藏狀態(tài)??梢允褂谩耙晥D”→“工具箱”命令打開,如圖2-14所示。圖2-14工具箱在工具箱中,包括了所有VisualStudio2010提供的控件。在使用時,只需將這些控件從工具箱拖放到項目相應(yīng)的視圖中即可。這樣的方式可以節(jié)省編寫代碼的時間,從而加快程序開發(fā)進度。圖2-11所示的中間位置為VisualStudio2010的主窗口,在里面可以進行網(wǎng)站頁面的設(shè)計以及代碼的編寫,如圖2-15所示。圖2-15VisualStudio2010的主窗口可以將.NET平臺提供的控件直接拖放到這里面,同時后臺代碼也是在這個區(qū)域進行編寫的。在圖2-15的下方,正如我們前面提到的,有三個不同的選項:“設(shè)計”表示當(dāng)前為設(shè)計模式,即在瀏覽器上直接顯示的效果;“源”為源碼模式,在這里可以直接編輯頁面的源代碼;“拆分”表示兩種混合模式,當(dāng)前圖2-15顯示的即為混合模式,上部分顯示的為源碼,下部分顯示的為設(shè)計效果。圖2-11所示的最右邊為解決方案資源管理器窗口,如圖2-16所示。在這里顯示的是當(dāng)前整個項目的文件列表,在這里面可以快速選擇需要編輯的文件。圖2-16解決方案資源管理器在圖2-16中,以aspx為后綴的文件為前臺Web頁面文件,以cs為后綴的為后臺代碼頁面,主要包括對各類控件事件的編寫,Web.config為配置文件。在解決方案資源管理器下面的為屬性窗口,如圖2-17所示。在圖中顯示的是一個Button按鈕控件的屬性。在VisualStudio2010中,每個控件都有自己的屬性,可以在屬性窗口中對屬性進行設(shè)置。圖2-17屬性窗口開發(fā)環(huán)境的最下面是調(diào)試窗口,如圖2-18所示。在編寫完程序進行調(diào)試的時候,如果程序有錯誤可以在這里進行顯示,便于發(fā)現(xiàn)并修改錯誤。圖2-18調(diào)試窗口VisualStudio2010是一個開發(fā)平臺的集合,除了可以開發(fā)基于B/S架構(gòu)的Web應(yīng)用程序外,還可以開發(fā)基于C/S架構(gòu)的Windows窗體應(yīng)用程序、WindowsPresentationFoundation應(yīng)用程序,以及進行Office和水晶報表開發(fā)等。在VisualStudio2010開發(fā)平臺上可以支持C#,VB,C++等開發(fā)語言。VisualStudio2010支持的開發(fā)類型如圖2-19所示。圖2-19VisualStudio2010支持的開發(fā)類型2.1.3幫助系統(tǒng)在VisualStudio2010中最主要的幫助系統(tǒng)就是它提供的幫助文檔。幫助文檔MSDN是關(guān)于VisualStudio2010的一個資料庫,里面包含了所有的原始文檔和用于與VisualStudio2010集成的其他所有幫助。在這里面匯集了開發(fā)人員總結(jié)出來的開發(fā)經(jīng)驗以及比較好的解決方案,因此通過對幫助文檔的了解可以及時獲得所需要的技術(shù)知識。幫助文檔MSDN的使用有兩種方式,最簡單的一種就是在程序的開發(fā)過程中按鍵盤上的“F1”鍵,它是激活在線幫助的快捷鍵。另外一種方式可以通過選擇“開始”→“所有程序”→“MicrosoftVisualStudio2010”→“MicrosoftVisualStudio2010文檔”打開幫助系統(tǒng)的啟動頁,如圖2-20所示。圖2-20幫助系統(tǒng)主頁面使用MSDN幫助文檔可以采用搜索方式查找所需要的內(nèi)容,如圖2-21所示,在搜索框中鍵入需要查找的內(nèi)容并單擊“搜索”按鈕即可。圖2-21使用MSDN幫助關(guān)于VisualStudio2010開發(fā)平臺的介紹就到這里吧,怎么樣,對您的“兵器”還滿意嗎?相信在今后不斷地練習(xí)之后,會對它更加熟悉、更加得心應(yīng)手。喝杯咖啡,休息一下OK,一下子說了這么多,您也看了這么久,該休息一下了,畢竟身體是革命的本錢嘛。喝杯咖啡,聽聽音樂,起身眺望窗外,活動活動身體,打開電視,電視里正在播放《奮斗》,對,像陸濤、華子和向南一樣奮斗!向您推薦《編程之道》中的一段話:宇宙之初有道。道產(chǎn)生了空間和時間??臻g和時間便是編程設(shè)計之陰陽。不能領(lǐng)悟此道的編程者總是耗盡他們所要編寫的程序的時間和空間;而領(lǐng)悟此道的編程者卻總有足夠的時間和空間來達(dá)到他們的目標(biāo)。除此之外,難道還有其他的情形嗎?2.2內(nèi)功篇——C#語言基礎(chǔ)僅有一件強大的兵器,沒有高深的內(nèi)功修養(yǎng),很顯然是不能成為一個真正的“武林高手”的。當(dāng)然,對于內(nèi)功的修煉是一個漫長的過程,有時候也顯出幾分枯燥,引用孟子的一段話:“天將降大任于斯人也,必先苦其心志,勞其筋骨,餓其體膚,空乏其身,行拂亂其所為,所以動心忍性,增益其所不能……”。2.2.1C#簡介首先,我們還是來認(rèn)識一下C#這門語言,了解一下它的成長歷程。C#是隨微軟的.NET技術(shù)一起成長的新一代面向?qū)ο蟮木幊陶Z言。C#自從2001年2月問世以來到現(xiàn)在已經(jīng)發(fā)展到4.0版本。C#的發(fā)展歷程如表2-1所示。表2-1C#發(fā)展歷史從發(fā)布到目前的C#4.0版本,一路走來,C#不斷地改進和完善其自身的功能,深受廣大程序開發(fā)人員所喜愛。由于C#面向?qū)ο蟮奶匦?、強大的功能及其VisualStudio系列對C#語言的支持,在不到8年的發(fā)展時間內(nèi),C#就已經(jīng)打破了Java語言一統(tǒng)天下的局面,發(fā)展成為目前應(yīng)用面向?qū)ο筮M行各種應(yīng)用開發(fā)最流行的工具之一。C#語法結(jié)構(gòu)簡單,非常容易上手,因此它也成了很多初學(xué)者在學(xué)習(xí)軟件開發(fā)之初,打開潘多拉寶盒的那把鑰匙。學(xué)習(xí)和了解一門程序開發(fā)語言,首先要了解該語言的語法結(jié)構(gòu)。這如同學(xué)習(xí)英語一樣,需要掌握一定數(shù)量的詞匯和句子結(jié)構(gòu)。C#語言和英語同樣是語言,只不過前者是計算機能夠識別的,后者是人類進行交流的,所以掌握基本的語法是讓計算機能夠展示設(shè)計的應(yīng)用系統(tǒng)的基礎(chǔ)。當(dāng)然您也不要擔(dān)憂,C#不會像英語那樣讓人頭痛,掌握C#語言的難度是遠(yuǎn)遠(yuǎn)低于英語的。下面幾節(jié),我將帶領(lǐng)您一同靜下心來修煉一下內(nèi)功心法,為您講解C#語言的一些基礎(chǔ)知識。當(dāng)然,我也不會過多地對C#語言的技術(shù)細(xì)節(jié)進行深入的講解,因為我們的目的是一起快速地開發(fā)一個網(wǎng)上商店ASP.NET應(yīng)用程序。您也完全不會感覺到曾經(jīng)對編程有偏見的一種說法:“編程是一種痛苦!”。通過對這些知識的學(xué)習(xí),您也許會發(fā)出這樣的驚嘆:“哇,編程也不過如此!”。在對這些基礎(chǔ)知識的講解過程中,讓我們把將要實現(xiàn)的網(wǎng)上商店的業(yè)務(wù)情況考慮進來,通過這樣的方式來學(xué)習(xí)C#。Areyouready?Let'sgo!2.2.2C#的數(shù)據(jù)類型C#這門年輕的程序開發(fā)語言站在Microsoft巨人的肩膀上,它集眾家之長,比如VisualBasic,Java以及C++等,但又有自己的特點,比如它沒有了C++中指針的概念,同時它是一門完全面向?qū)ο蟮恼Z言,包含了類、對象、繼承、封裝、重載等概念。另外,C#中所有的類型均直接或間接地繼承自System.Object基類。關(guān)于面向?qū)ο蟮倪@些概念,會在2.2.5小節(jié)中詳細(xì)介紹。C#中的數(shù)據(jù)類型主要分為兩類:值類型和引用類型。值類型又稱為數(shù)值類型,包含簡單類型、結(jié)構(gòu)類型和枚舉類型3種。引用類型有6種,包含類類型、數(shù)組類型、接口類型、委托類型、對象類型和字符串類型。也許您要問,值類型和引用類型到底有什么區(qū)別?這兩個詞字面上看起來都挺頭痛的。其實兩者是通過它們在計算機中存儲的方式進行分類的。下面通過一個比喻在您腦海中建立一個簡單而直觀的印象??梢园延嬎銠C中的內(nèi)存單元看成一個個抽屜,值類型的對象是直接可以從抽屜里面拿出來的;引用類型的對象也對應(yīng)一個抽屜,但是在這個抽屜里拿出來的是一個抽屜號碼,通過這個號碼找到另外一個抽屜,在找到的這個抽屜里面放的才是引用類型對象的值。您看到這么多的術(shù)語也許就頭痛了,有9種之多呢。其實它們是很簡單的,只是說法比較特別而已,完全不需要像英語單詞那樣記住。下面將一一為您揭開它們看似神秘的面紗。小提示關(guān)于引用類型和值類型,它們背后有太多太多的故事,涉及.NETFramework的CLR(CommonLanguageRuntime,公共語言運行時)的運行方式,涉及對象在內(nèi)存中托管堆、運行時棧的空間分配等問題,是一個比較復(fù)雜的概念,它需要您對.NETFramework有一個全面的、徹底的了解。在此,我不將.NETFramework的底層概念一一講述,您可以借助其他的參考書籍,慢慢地體會其中的博大精深,例如一本叫做《框架設(shè)計(第2版):CLRViaC#》的書,就是一本很優(yōu)秀的、關(guān)于.NET內(nèi)部實現(xiàn)的書籍。當(dāng)然,我還是建議您在有一定的C#程序開發(fā)經(jīng)驗和體會之后再去學(xué)習(xí)底層的.NET運行機制,那會稍微容易一點兒。1.值類型值類型是在它自己分配的內(nèi)存中直接存儲數(shù)據(jù)。值類型包括簡單類型、結(jié)構(gòu)類型和枚舉類型。簡單類型簡單類型是直接由元素構(gòu)成的數(shù)據(jù)類型,可細(xì)分為整數(shù)類型、實數(shù)類型、布爾類型和字符類型。以商店中的商品和它的價格為例吧,請看下面的一小段程序:productId表示商品的數(shù)量,前面的int表示它為整數(shù)類型。整數(shù)類型用來表示現(xiàn)實世界中的整數(shù)。C#支持8種整數(shù)類型,如long,short等,它們之間的區(qū)別在于表示整數(shù)的范圍。第二行代碼中的price表示商品的價格,商品的價格有可能是整數(shù),也有可能是小數(shù),因此用double表示,即實數(shù)類型。實數(shù)類型可以用來表示現(xiàn)實世界中所有的實數(shù)。根據(jù)表示范圍和精度的不同,C#也支持多種實數(shù)類型,諸如float,decimal等。整數(shù)類型和實數(shù)類型完全能夠表示現(xiàn)實世界中所有與數(shù)字有關(guān)的問題。這樣就能夠顯示世界中的所有問題了嗎?回答當(dāng)然是否定的。曾經(jīng)有這樣一句話:“計算機程序=邏輯+數(shù)字”。所以計算機程序經(jīng)常需要處理一些與邏輯相關(guān)的操作。比如用戶想要在網(wǎng)上商店買東西,需要登錄到系統(tǒng),系統(tǒng)通過什么來識別用戶是否登錄了呢?實際上需要一個如下的布爾邏輯值作為判斷的元素。在C#中使用bool來說明loginFlag是布爾類型的,表示用戶登錄的狀態(tài)。布爾類型有兩個取值,分別為true和false。這兩個值是計算機程序進行條件選擇、循環(huán)執(zhí)行等操作的核心,本章將會在流程控制小節(jié)中展示其強大的魅力。在計算機程序中除了處理數(shù)字之外,最主要的信息就是字符了。字符包括數(shù)字字符、英文字符等。在C#中使用char來表示字符類型,它只能包含一個字符。因此字符可以用來表示網(wǎng)上商店用戶的性別信息,例如:后面我們將介紹的字符串類型(string)也可以用來表示用戶的性別信息,讀者可以對比一下如下的代碼:這兩種方式外觀上并沒有多大的區(qū)別。但是在C#中,char和string有著本質(zhì)上的區(qū)別,前者是值類型,后者是引用類型。小提示目前家用的計算機內(nèi)存都可以達(dá)到4GB了,多用少用幾個存儲單元對程序的功能沒有絲毫影響。但是目前計算機程序算法設(shè)計追求的是“時間更少、空間更小”。對初學(xué)者而言,注意節(jié)省存儲空間也是一種良好的編程習(xí)慣,這也為以后開發(fā)高效率、高性能的大型應(yīng)用程序奠定良好的基礎(chǔ),當(dāng)然這是后話了。結(jié)構(gòu)類型前面介紹了C#中的簡單類型,但是現(xiàn)實世界中的事物僅靠這些簡單類型是很難表達(dá)的。為了表達(dá)網(wǎng)上商店中的各種商品,包括商品名稱、編碼、價格以及廠家等基本信息,這些信息是一個整體。如果分別用單個變量來表示,肯定會破壞商品信息的整體性,也降低了程序的可讀性??紤]到這樣的問題,在C#中還提供了結(jié)構(gòu)體的概念來幫助我們定義新的數(shù)據(jù)類型,從而解決這樣的問題。結(jié)構(gòu)體是由多個基本的數(shù)據(jù)類型組合而成的。這有點類似表格中的一條記錄。結(jié)構(gòu)類型采用struct來進行定義,內(nèi)部的每一個變量稱為結(jié)構(gòu)的成員。下面的代碼2-1中定義了一個記錄商品信息的結(jié)構(gòu)以及如何使用結(jié)構(gòu)。代碼2-1代碼中的p1是一個結(jié)構(gòu)類型的變量。在結(jié)構(gòu)體聲明中的public表示對結(jié)構(gòu)類型成員的訪問權(quán)限。對結(jié)構(gòu)成員的訪問通過結(jié)構(gòu)變量加上訪問符“.”號,后跟成員名稱。通過對結(jié)構(gòu)成員的賦值后運行這段程序,我們可以得到如下結(jié)果:結(jié)構(gòu)體是C#從C中繼承下來的一種類型,與C中的結(jié)構(gòu)不同的是,它里面也可以包含方法、屬性、實現(xiàn)接口等,幾乎和面向?qū)ο蟮念愐荒R粯樱ú荒軐崿F(xiàn)繼承)。您也許又會有疑問了,到底在什么場合使用結(jié)構(gòu)呢?用類豈不是更接近面向?qū)ο蟮乃枷??是不是可以把結(jié)構(gòu)體從C#中移除?答案當(dāng)然是否定的。C#不會毫無理由地引入一種數(shù)據(jù)類型。因為結(jié)構(gòu)是值類型的,因此在表示如點、矩形等輕量級對象時的成本開銷比較小。另外如果成員只是一些數(shù)據(jù)的時候,結(jié)構(gòu)也是不錯的選擇。上面的例子中,商品Product如果只包含一些數(shù)據(jù)成員,用結(jié)構(gòu)是最合適不過了。但是在網(wǎng)上商店中,商品還需要定義一些方法、屬性等,所以就只能用類來描述了。枚舉類型在網(wǎng)上商店中由于要涉及商品的買賣,所以訂單處理是必不可少的操作。對訂單處理主要是按照其狀態(tài)進行的。訂單狀態(tài)一般分為:待處理、已確認(rèn)、已收款、已發(fā)貨、已取消5種狀態(tài),通常在程序中采用數(shù)字來表示各種不同的狀態(tài)。如“0”表示“待處理”,“1”表示“已確認(rèn)”等。這樣的表示不能說是錯誤的,但是很容易讓程序開發(fā)人員混淆,并且使程序的可讀性降低。同時程序修改難度加大,比如某天程序員想用“0”表示“已取消”,程序修改量豈不是很大?當(dāng)然功能強大的C#是不會讓您失望的,它提供了枚舉類型來解決這樣的問題。先看下面的代碼:代碼定義了State為枚舉類型,里面的元素如“待處理”表示一個int類型的常數(shù)。默認(rèn)情況下,第一個枚舉數(shù)為0,后面每個枚舉數(shù)的值依次遞增1。因此在此枚舉中,“待處理”為0,“已確認(rèn)”為1,“已收款”為2,依此類推。枚舉也可以重寫默認(rèn)值的初始值設(shè)定項。如下代碼:在此枚舉中,強制元素序列從1而不是從0開始。使用枚舉元素方式如下,它可以與基礎(chǔ)類型(int)的值相互轉(zhuǎn)換。下面的代碼則展示了如何使用枚舉:因此通過枚舉可以很方便地與整數(shù)進行轉(zhuǎn)換,從而使程序代碼具有更高的可讀性和可維護性。2.引用類型C#提供的另一種數(shù)據(jù)類型是引用類型,引用類型的變量不直接存儲所包含的值,而是指向它所要存儲的值,也可以理解為引用類型存儲實際數(shù)據(jù)的引用值的地址。引用類型包括類類型、接口類型、數(shù)組類型、委托類型、對象類型和字符串類型等6種類型。字符串類型在網(wǎng)上商店的程序中,商品名稱、商品生產(chǎn)廠家以及用戶登錄名等信息可以采用下面的方式進行表示:string就是C#提供的字符串類型,在前面結(jié)構(gòu)類型一節(jié)中已經(jīng)遇到過它了。它是程序中非常普遍的數(shù)據(jù)類型,在string中封裝了很多的內(nèi)部方法,在程序開發(fā)中,只需簡單地加以利用就可以了。在圖2-22中顯示了在string類中封裝的內(nèi)部方法。程序開發(fā)中只需在string變量名后加上訪問符號“.”,string類封裝的方法自動會顯示出來。圖2-22string類封裝的內(nèi)部方法(部分)字符串除了能保存一些信息外,還可以進行一些運算。用戶如果需要購買網(wǎng)上商店的商品必須先登錄進去,那么系統(tǒng)是如何驗證登錄的用戶是否合法的呢?這里就用到了字符串提供的“==”運算符。通過這個運算符來判斷用戶當(dāng)前輸入的用戶名和密碼是否與系統(tǒng)保存的用戶名、密碼相同,判斷結(jié)果返回為bool類型:string還提供了一個內(nèi)部方法Equals()來進行字符串比較,如下所示:小提示對初學(xué)者而言,一定要分清“==”和“=”符號的區(qū)別,在C#語言中,“==”是比較運算符,用來判斷兩個變量是否相等;“=”是賦值符,用于對變量賦值?!?”在您熟悉的自然語言里是等于符號。數(shù)組類型數(shù)組是一組類型相同的有序數(shù)據(jù),數(shù)組按照數(shù)組名、數(shù)據(jù)元素類型和維數(shù)來進行描述。在C#中,數(shù)組的工作方式與其他大多數(shù)開發(fā)語言中的工作方式類似,C#中的數(shù)組可以是一維數(shù)組、多維數(shù)組以及交錯數(shù)組(數(shù)組的數(shù)組)。聲明一個整型數(shù)組,如下所示:數(shù)組聲明的時候可以初始化數(shù)組元素的值。C#通過將初始值放在大括號{}內(nèi)為初始化數(shù)組提供了簡單而直接的方法。如果聲明時未初始化數(shù)組,則數(shù)組成員自動初始化為該數(shù)組類型的默認(rèn)初始值。下面的示例展示了數(shù)組初始化的方法:訪問數(shù)組成員可以直接進行,類似在其他語言中訪問數(shù)組成員的方法。如下代碼創(chuàng)建了一個名為number的數(shù)組,然后修改第3個元素的值。在數(shù)組中,元素的索引是從0開始的,也就是說,對于數(shù)組number,其元素個數(shù)為5,元素的索引編號是0~4。上面主要介紹的是一維數(shù)組,下面簡單介紹一下多維數(shù)組的聲明,如下所示:類類型在前面介紹結(jié)構(gòu)的時候已經(jīng)提到了類,在網(wǎng)上商店中的商品、訂單都需要定義屬性和方法,如果用結(jié)構(gòu)來描述的話就會顯得捉襟見肘,因此需要用類來進行描述。代碼2-2用類Product描述網(wǎng)上商店中的商品,該類包含數(shù)據(jù)成員和方法成員。代碼2-2類支持繼承機制,通過繼承派生類可以擴展基類的數(shù)據(jù)成員和方法成員,從而達(dá)到代碼重用的目的。但是和C++中的類不同,C#中不允許類進行多層繼承,只允許單繼承。在后面章節(jié)將對類進行詳細(xì)介紹。接口類型在網(wǎng)上商店的商品和訂單中,都會對價格進行操作,在商品中需要設(shè)置或者讀取商品的價格;在訂單中需要獲得訂單中所有商品價格的總和。在程序開發(fā)中,一種可行的辦法是在商品和訂單類中用不同的成員方法來實現(xiàn)價格的操作,此外,C#還提供接口來實現(xiàn)。通過在接口中預(yù)先定義一系列的方法,然后在實現(xiàn)該接口的類中分別對這些方法進行具體實現(xiàn)。代碼2-3展示了如何使用類來實現(xiàn)接口。代碼2-3在上面的代碼中聲明了一個接口PriceInterface,它有一個成員方法getPrice。同時代碼定義了商品類Product和訂單類Order,并分別實現(xiàn)了接口PriceInterface的方法getPrice。訂單中的getPrice方法體可以根據(jù)訂單的業(yè)務(wù)邏輯進行設(shè)計。在這里需要了解的是,如何進行接口聲明和類如何實現(xiàn)接口。小提示接口也支持繼承機制,并且它可以從多個基接口中繼承,同時類也可以實現(xiàn)多個接口,但接口中不能包含數(shù)據(jù)成員。委托類型在網(wǎng)上商店中,商品的價格不可能一直保持不變,和現(xiàn)實中的商品銷售一樣也需要進行一些促銷方式,比如商品打折等。在程序的設(shè)計中,當(dāng)出現(xiàn)打折的業(yè)務(wù)需求時,如果在出現(xiàn)價格的地方都進行打折換算,不僅程序修改量比較大并且也容易出錯。如果商家取消打折按原價銷售呢,那么所有的修改都需要還原。因此在C#中提供了委托來解決這樣的問題,編程人員可以根據(jù)商家的銷售策略動態(tài)地調(diào)用不同的價格計算方法。先看代碼2-4,看看如何實現(xiàn)這個神奇的功能。代碼2-4輸出結(jié)果為:代碼2-4的第一行聲明了委托PriceDelegate,它的返回類型為double,并且不帶任何參數(shù)。在商品類Product中有兩個價格成員方法getPrice和DiscountPrice,它們分別用來處理原價和折扣價格。在Page_Load方法中,通過這兩個成員方法創(chuàng)建了不同的委托對象,在具體的業(yè)務(wù)邏輯中可以根據(jù)不同情況,采用相同的方式進行創(chuàng)建。通過委托在程序中根據(jù)業(yè)務(wù)邏輯的處理需求動態(tài)地調(diào)用了不同的價格處理方法,使得業(yè)務(wù)邏輯處理更加方便。小提示在委托使用中,任何方法都可以通過委托動態(tài)地調(diào)用,只是方法的參數(shù)類型和返回類型必須與委托的參數(shù)類型和返回類型一致。對象類型前面已經(jīng)提到,C#是一門面向?qū)ο蟮恼Z言,因此可以把所有的一切都看成對象。因此C#提供了對象類型(object),可以將其他類型轉(zhuǎn)化為對象類型,對象類型是所有其他類型的基類。因此object類型可以存儲任何類型的值,可以定義object類型的參數(shù),object也可以作為方法返回值的類型。下面的代碼是在object中存儲商品類Product的一個實例對象。3.類型轉(zhuǎn)換——裝箱和拆箱和現(xiàn)實中的商店一樣,在網(wǎng)上商店中,同時會有很多顧客在商店中選購自己滿意的商品,也會出現(xiàn)人頭攢動的熱鬧景象。當(dāng)然我們是看不到這個熱鬧場面的,計算機程序才能感覺到這番景象。既然有這么多的顧客,怎么來識別他們,看不到顧客的面孔,會不會把兩個或者多個顧客當(dāng)成同一個人呢?有沒有解決的辦法呢,回答當(dāng)然是肯定的,不然我們的網(wǎng)上商店就無法營業(yè)了。在C#中,提供了會話(Session)來區(qū)分不同的客戶。當(dāng)不同的客戶登錄到網(wǎng)上商店時,服務(wù)器就會為當(dāng)前的客戶設(shè)置Session對象來保存不同客戶的信息。即每個客戶都有自己與眾不同的Session,當(dāng)客戶購買商品的時候,通過Session,商品準(zhǔn)確地與客戶對應(yīng)。下面的代碼表示客戶登錄到商店時,商店進行的Session設(shè)置:在代碼中,將客戶的IDuserID(int類型)和用戶名userName(string類型)裝入Session對象中,因為客戶的ID和用戶名就能夠唯一標(biāo)識客戶。在購買商品的時候,通過下面的代碼取出會話中的信息識別客戶。這樣就獲得了客戶的ID和名稱,在Session前面的(int)表示將會話值強制轉(zhuǎn)換為int類型。代碼2-5展示了會話設(shè)置和讀取的全過程:代碼2-5在代碼中,創(chuàng)建一個用戶類User對象實例,然后對用戶ID和用戶名稱進行賦值,并將這兩個成員變量裝到會話對象中。最后從會話對象中讀出用戶ID和用戶名稱,并顯示出來,程序運行結(jié)果為:實際上,對會話進行的操作就是C#提供的裝箱和拆箱機制,它是基本類型與object類型之間的相互轉(zhuǎn)換。在網(wǎng)上商店中,Session是object類型的,裝箱就是設(shè)置會話,拆箱就是讀取會話。裝箱和拆箱使基本類型能夠被視為對象。裝箱將基本類型隱式或者顯式地轉(zhuǎn)換成一個object類型,如下代碼所示:拆箱過程分為兩步:首先檢查這個對象的實例,是否為給定的值類型的裝箱值;然后將這個實例的值復(fù)制給基本類型的變量,例如:裝箱操作可以隱式進行,但是拆箱必須是顯式的。喝杯咖啡,休息一下怎么樣?您對剛剛的內(nèi)容掌握了多少呢?對這些基礎(chǔ)知識的學(xué)習(xí)是一個比較乏味的過程,但正所謂“萬丈高樓平地起”,沒有一個好的基礎(chǔ)怎么行呢,您說是吧,再堅持一下,勝利就在眼前。在進入下面的學(xué)習(xí)之前,還是讓我們放松一下吧,Music!2.2.3變量和常量OK,休息一下是否感覺到整個人都輕松了下來,那就讓我們繼續(xù)“修煉”吧,奮勇前進!1.變量在商品類Product的定義中,有這樣的代碼:它們都稱為變量,是用來存儲商品信息的基本單元。在C#中要使用變量,必須先定義變量的名稱與數(shù)據(jù)類型,如下所示:如上面的代碼中,使用int,float,double,string和char等關(guān)鍵字來定義變量名稱并指定其數(shù)據(jù)類型。變量在命名時需要遵循一些規(guī)則:●變量名的第一位不能是數(shù)字,中間不能有空格?!褡兞棵胁荒苁褂靡恍┨厥庾址?,如*,&,%,^之類的字符?!褡兞棵荒芘cC#中的關(guān)鍵字同名,如int,class,double等。變量的命名也有一些風(fēng)格,但是最主要還是以清晰易懂為主。盡量避免使用一些簡單的字母作為變量名稱,這會增加日后程序維護的困難,發(fā)生同名的幾率也比較大。比較流行的變量命名通常以小寫字母作為開始,并在每個單詞開始時第一個字母使用大寫。例如:這樣的名稱可以讓人一眼就看出變量的作用,在程序開發(fā)中這樣的命名是經(jīng)常采用的。小提示C#語言不允許使用未初始化的變量。如果變量在定義時沒有進行初始化,那么在使用該變量前一定要賦值,否則會導(dǎo)致編譯時報錯。2.靜態(tài)變量在商品類Product中,還可以以這樣的方式進行變量定義,如下所示:與前面的變量定義相比,您會發(fā)現(xiàn)在變量company的前面有static修飾,這就是C#提供的靜態(tài)變量修飾符號,通過這樣聲明的變量為靜態(tài)變量。一般在C#中,靜態(tài)變量多用于類中的成員變量,表示類的所有實例對象都共同擁有的一個屬性值。如上面的類Product里面的company變量值為P&G,那么由該類生成的所有實例對象的company都是P&G。由于靜態(tài)變量值不依賴類的特定對象而存在,訪問的時候直接通過類名加“.”加變量名來實現(xiàn)。如下所示:盡管類可以創(chuàng)建很多個對象,但靜態(tài)變量只有一個副本。所以無論有多少個Product的對象在程序中被創(chuàng)建,在內(nèi)存中company變量僅有一份。靜態(tài)變量最好在聲明時將其賦值。3.實例變量當(dāng)然在類中,大部分的成員變量是沒有static修飾的,這樣的變量也稱為實例變量,它們的值為類的各個特定的實例對象單獨所有。比如上面代碼中商品類的價格Price,各個具體的商品對象有不同的價格,因此Price必須為實例變量。因為實例變量值是由特定對象存在的,因此訪問的時候,需要通過類的實例名加“.”加變量來進行訪問。4.常數(shù)根據(jù)自然辯證統(tǒng)一的思想,任何事物都有兩方面,C#編程語言中包含有變量,那么肯定也會包含常量。常量,顧名思義肯定是固定不變的,又稱為常數(shù),就是在程序運行過程中其值固定不變的量。常量的類型可以是任意的值類型或引用類型。常量被聲明為字段,通過關(guān)鍵字const進行聲明,在聲明的時候必須初始化。在上面的Calendar類中,定義了int類型的月份months為常量,它的值為12,然后定義了年year、月month、日day常量分別為2008,7和11。雖然沒有使用static關(guān)鍵字來聲明常量,但可以像訪問靜態(tài)字段一樣訪問常量。通過類名加“.”加常量名來實現(xiàn),如下所示:2.2.4流程控制在網(wǎng)上商店中,用戶如果購買東西的話必須先登錄,然后才能進行一系列的操作。用戶在登錄進行身份驗證的時候有兩種可能,要么是合法用戶允許進入,要么是非法用戶拒絕進入。程序的執(zhí)行流程都是從上往下逐條順序進行的,像用戶登錄這樣需要選擇執(zhí)行代碼的邏輯應(yīng)該怎樣完成呢?和大多數(shù)編程語言一樣,C#提供了流程控制機制來實現(xiàn)這些邏輯功能。流程控制依據(jù)某個表達(dá)式的結(jié)果(true或false)來決定程序要執(zhí)行哪些代碼,不執(zhí)行哪些代碼,或者決定哪些代碼需要重復(fù)執(zhí)行。流程控制語句主要包括條件語句和循環(huán)語句。1.條件語句if語句讓我們能夠根據(jù)某個表達(dá)式的結(jié)果來決定是否執(zhí)行一個或者多個連續(xù)語句,可有可無的else子句可以連續(xù)檢驗多個測試條件,switch語句單獨用來同時測試多個條件。if…else語句if…else語句是最常用的條件語句,它根據(jù)布爾表達(dá)式的值來判斷是否執(zhí)行后面的內(nèi)嵌語句。if…else語句的語法格式如下所示:if…else這兩個關(guān)鍵字一般是成對出現(xiàn)的,if關(guān)鍵字后面緊跟著一個條件語句,若符合這個條件語句,程序直接執(zhí)行if下面的語句,否則程序流程跳到else關(guān)鍵字下的語句。代碼2-6展示了if…else的執(zhí)行情況:代碼2-6程序運行結(jié)果為:前面提到的用戶登錄網(wǎng)上商店的邏輯完全可以通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022教師考核表個人述職報告范文【7篇】
- 結(jié)算工作總結(jié)模板4篇
- 競聘演講稿(集合15篇)
- 元旦晚會有感心得5篇
- 春天周末經(jīng)典祝福語
- 見習(xí)護士自我鑒定集錦15篇
- 消化工作計劃合集6篇
- 煤礦崗位工作標(biāo)準(zhǔn)
- 廣東省汕頭市潮南井都中學(xué)2024-2025學(xué)年九年級上冊語篇填空與補全對話專項練習(xí)測試卷(含答案)
- 村屯開展環(huán)境整治工作總結(jié)(4篇)
- 商場用電安全培訓(xùn)
- 《中小學(xué)教育懲戒規(guī)則(試行)》宣講培訓(xùn)
- 結(jié)清貨款合同范例
- 掛靠裝修公司合同范例
- 2021年四川省涼山州九年級中考適應(yīng)性考試?yán)砜凭C合(試卷)
- 骨科疼痛的評估及護理
- 【MOOC】概率論與數(shù)理統(tǒng)計-南京郵電大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年度軟件開發(fā)分包合同技術(shù)要求與交底2篇
- 湖南省邵陽市2023-2024學(xué)年高一上學(xué)期拔尖創(chuàng)新人才早期培養(yǎng)競賽(初賽)數(shù)學(xué)試題 含解析
- 居家養(yǎng)老人員培訓(xùn)管理制度
- 2024年執(zhí)業(yè)藥師資格繼續(xù)教育定期考試題庫附含答案
評論
0/150
提交評論