書(shū)名: 新手學(xué)ASP.NET 3.5網(wǎng)絡(luò)開(kāi)發(fā)作者名: 孔琳俊 陳松等編著本章字?jǐn)?shù): 1302字更新時(shí)間: 2018-12-27 20:32:13
第1篇 從零開(kāi)始
0 學(xué)習(xí)Web開(kāi)發(fā)必備知識(shí)
本章專(zhuān)門(mén)針對(duì)性完全沒(méi)有Web開(kāi)發(fā)基礎(chǔ)的讀者,從什么是網(wǎng)頁(yè)開(kāi)始講起,一直到Web開(kāi)發(fā)基礎(chǔ)環(huán)境的搭建和配置。本書(shū)所有Web開(kāi)發(fā)都是使用C#語(yǔ)言完成的,本章就C#的基本概念和基礎(chǔ)語(yǔ)法,進(jìn)行了詳細(xì)的講解。在開(kāi)發(fā)工具方面,本書(shū)采用了微軟最新推出的Visual Studio 2008開(kāi)發(fā)套件,Internet信息配置是使用最新版本的IIS 7,瀏覽器使用的是IE 7.0。
本章從網(wǎng)頁(yè)搭建、編程規(guī)范等非常基礎(chǔ)的開(kāi)發(fā)人員知識(shí)入手,介紹了C#的基本語(yǔ)法,C#開(kāi)發(fā)的編碼結(jié)構(gòu),以及C#編程中遇到的一些基本知識(shí)點(diǎn),希望讀者能有一個(gè)很好的入門(mén)。
0.1 基礎(chǔ)概念
基礎(chǔ)概念是學(xué)習(xí)一門(mén)技術(shù)的入門(mén),在學(xué)習(xí)Web開(kāi)發(fā)前,首先要明白Web開(kāi)發(fā)的一些基本概念,如什么是網(wǎng)頁(yè),什么是Web開(kāi)發(fā),用什么技術(shù)可以完成一個(gè)網(wǎng)頁(yè),或者說(shuō),用什么技術(shù)能完成一個(gè)Web程序。本節(jié)將會(huì)對(duì)這些概念進(jìn)行詳細(xì)的解釋。
0.1.1 什么是網(wǎng)頁(yè)
網(wǎng)頁(yè)是讀者上網(wǎng)瀏覽時(shí)看到的頁(yè)面,通過(guò)瀏覽器,呈現(xiàn)在電腦上,用戶(hù)在瀏覽器的地址欄,輸入一個(gè)網(wǎng)站地址,如“www.baidu.com”,則打開(kāi)一個(gè)頁(yè)面,如圖0.1所示,這個(gè)頁(yè)面就是我們常說(shuō)的“網(wǎng)頁(yè)”。網(wǎng)站是一個(gè)具有多個(gè)網(wǎng)頁(yè)的站點(diǎn),如“www.baidu.com”就是一個(gè)網(wǎng)站的地址,用戶(hù)通過(guò)這個(gè)地址來(lái)訪(fǎng)問(wèn)網(wǎng)站,網(wǎng)站包含多個(gè)相關(guān)的網(wǎng)頁(yè)。如圖0.1所示的是打開(kāi)的百度網(wǎng)站的主頁(yè)。

圖0.1 百度網(wǎng)站的主頁(yè)
0.1.2 網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)
網(wǎng)頁(yè)分為動(dòng)態(tài)網(wǎng)頁(yè)和靜態(tài)網(wǎng)頁(yè)。如果要制作簡(jiǎn)單的靜態(tài)網(wǎng)頁(yè),只需要學(xué)習(xí)HTML語(yǔ)言就可以,這是一門(mén)非常簡(jiǎn)單的語(yǔ)言,通過(guò)標(biāo)簽來(lái)完成基本網(wǎng)頁(yè)設(shè)置。下面的代碼是一個(gè)比較完整的HTML結(jié)構(gòu)。
<html> <head> <!-- 網(wǎng)頁(yè)的標(biāo)題等標(biāo)頭內(nèi)容 --> </head> <body> <-- 網(wǎng)頁(yè)的主要內(nèi)容 --> </body> </html>
其中標(biāo)簽都是成對(duì)出現(xiàn)的,如“<html></html>”,html是HTML語(yǔ)言開(kāi)始的地方,代表這是一段HTML代碼。“<head></head>”是一個(gè)頁(yè)面的“頭”,一般包括這個(gè)頁(yè)面的主題和一些需要調(diào)用的頁(yè)面樣式等。“<body></body>”是頁(yè)面的“身體”,主要在此處寫(xiě)頁(yè)面的內(nèi)容。下面通過(guò)一個(gè)完整的頁(yè)面實(shí)例,看看一個(gè)簡(jiǎn)單的靜態(tài)頁(yè)面是什么樣子,此頁(yè)面的運(yùn)行效果如圖0.2所示,其中title表示當(dāng)前頁(yè)面的主題,顯示在瀏覽器的頂端。
<html> <head> <title>第一個(gè)靜態(tài)頁(yè)面</title> </head> <body> 這是頁(yè)面的主要內(nèi)容 </body> </html>
靜態(tài)網(wǎng)頁(yè)可以算是第一代網(wǎng)頁(yè),靜態(tài)網(wǎng)頁(yè)只顯示基本內(nèi)容,根本無(wú)法與用戶(hù)交互。要想與用戶(hù)交互,就需要?jiǎng)討B(tài)網(wǎng)頁(yè),動(dòng)態(tài)網(wǎng)頁(yè)包括靜態(tài)部分和動(dòng)態(tài)部分,靜態(tài)部分依然由HTML語(yǔ)言組成,而動(dòng)態(tài)部分則由JavaScript和VBScript組成。因?yàn)閂BScript只能用在IE瀏覽器上,所以JavaScript更為通用,可以用在任意瀏覽器上。下面是添加了JavaScript代碼的動(dòng)態(tài)網(wǎng)頁(yè),其中要在網(wǎng)頁(yè)中添加JavaScript代碼,必須添加“script”標(biāo)記,而且需要使用“l(fā)anguage”屬性指明腳本使用的語(yǔ)言。
1. <html> 2. <head> 3. <title>第一個(gè)靜態(tài)頁(yè)面</title> 4. <script language="javascript"><!—指明腳本的語(yǔ)言 --> 5. function jiaohu() <!—按鈕調(diào)用的方法--> 6. { 7. alert("您單擊了提交按鈕");<!- 單擊按鈕后彈出一個(gè)提示框--> 8. } 9. </script> 10. </head> 11. <body> 12. <input type="text"name="txt1"/> 13. <input type="button"name="btn1"value="提交"onclick="jiaohu()"/> 14. </body> 15. </html>
說(shuō)明
具體的JavaScript語(yǔ)法可參考專(zhuān)業(yè)的JavaScript書(shū)籍。
上述代碼生成的頁(yè)面如圖0.3所示,用戶(hù)可以輸入內(nèi)容,單擊“提交”按鈕,瀏覽器會(huì)根據(jù)JavaScript的設(shè)計(jì)給出交互,其效果如圖0.4所示。

圖0.3 一個(gè)動(dòng)態(tài)網(wǎng)頁(yè)

圖0.4 動(dòng)態(tài)網(wǎng)頁(yè)的交互
雖然JavaScript可以完成一些交互,但其不能訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),不能完成大容量數(shù)據(jù)的提交和獲取工作,所以一般都把JavaScript和VBScript稱(chēng)為腳本語(yǔ)言。除了腳本語(yǔ)言可以完成動(dòng)態(tài)網(wǎng)頁(yè)外,還有很多種服務(wù)器端開(kāi)發(fā)語(yǔ)言,如ASP、JSP、ASP.NET等。這些服務(wù)器端語(yǔ)言,可以實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互,可以反饋數(shù)據(jù)給瀏覽器,可以實(shí)現(xiàn)用戶(hù)與服務(wù)器的完整交互。本書(shū)要介紹的就是ASP.NET,確切地說(shuō),其不是一門(mén)語(yǔ)言,而是一門(mén)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),其底層語(yǔ)言是C#語(yǔ)言,C#語(yǔ)言在后面會(huì)詳細(xì)介紹。
0.1.3 Web開(kāi)發(fā)相關(guān)技術(shù)
前面介紹了網(wǎng)頁(yè)的分類(lèi),但網(wǎng)頁(yè)和Web開(kāi)發(fā)是什么關(guān)系呢?
網(wǎng)頁(yè)屬于Web開(kāi)發(fā)的對(duì)象,或者說(shuō)是Web開(kāi)發(fā)的一部分,凡是使用瀏覽器來(lái)查看的程序,我們統(tǒng)稱(chēng)為Web應(yīng)用程序,凡是用于開(kāi)發(fā)Web應(yīng)用程序的技術(shù),本書(shū)統(tǒng)稱(chēng)為Web開(kāi)發(fā)技術(shù)。
Web應(yīng)用程序一般會(huì)分為兩部分:前臺(tái)開(kāi)發(fā)和后臺(tái)開(kāi)發(fā)。
○ 前臺(tái)開(kāi)發(fā):主要包括頁(yè)面設(shè)計(jì)、樣式布局、特效等。頁(yè)面設(shè)計(jì)由基本的HTML和JavaScript完成,而樣式布局和特效一般由CSS(樣式表)完成。
○ 后臺(tái)開(kāi)發(fā):可以與數(shù)據(jù)庫(kù)交互的各種開(kāi)發(fā)語(yǔ)言,如ASP.NET、Java、PHP等。一般由一些類(lèi)庫(kù)和包組成。如果使用ASP.NET,微軟提供了一個(gè).NET 3.5框架,其包含了Web開(kāi)發(fā)所有需要的類(lèi)庫(kù),開(kāi)發(fā)人員可以輕松調(diào)用,完成非常復(fù)雜的功能。
0.2 搭建開(kāi)發(fā)環(huán)境
在學(xué)習(xí)一門(mén)開(kāi)發(fā)語(yǔ)言前,需要先把這門(mén)開(kāi)發(fā)語(yǔ)言的開(kāi)發(fā)環(huán)境搭建好。本書(shū)所使用的ASP.NET 3.5,需要安裝Visual Studio 2008開(kāi)發(fā)工具,此工具會(huì)自動(dòng)安裝類(lèi)庫(kù)需要的.NET 3.5框架。本節(jié)就介紹這個(gè)開(kāi)發(fā)工具的安裝過(guò)程。
0.2.1 安裝Visual Studio 2008
Visual Studio.NET是微軟公司推出的集成化互聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái),利用它可以設(shè)計(jì)、開(kāi)發(fā)以及調(diào)試部署Web應(yīng)用程序。下面簡(jiǎn)要介紹Visual Studio 2008的安裝。
1 插入Visual Studio 2008(以下簡(jiǎn)稱(chēng)VS2008)的安裝光盤(pán),彈出Visual Studio的安裝起始界面,如圖0.5所示。

圖0.5 安裝起始界面
提示
如果已經(jīng)安裝有VS 2008,則可以選擇安裝第二項(xiàng),MSDN的幫助文檔。如果不安裝此文檔,也可以到MSDN的網(wǎng)站,在線(xiàn)查看相關(guān)文檔。
2 單擊第一項(xiàng)“安裝Visual Studio 2008”,系統(tǒng)彈出“Visual Studio 2008安裝程序”對(duì)話(huà)框,如圖0.6所示。

圖0.6 “Visual Studio 2008安裝程序”對(duì)話(huà)框
3 單擊“下一步”按鈕,系統(tǒng)彈出許可協(xié)議界面。
4 選擇接受許可,然后在產(chǎn)品密鑰中輸入產(chǎn)品ID 號(hào),輸入名稱(chēng)。單擊“下一步”按鈕,彈出“選項(xiàng)頁(yè)”對(duì)話(huà)框,選擇所安裝的功能和產(chǎn)品安裝路徑。
5 單擊“安裝”按鈕,系統(tǒng)開(kāi)始安裝Visual Studio 2008,如圖0.7所示。

圖0.7 VS2008的安裝界面
6 安裝完成后,單擊“完成”按鈕,結(jié)束安裝過(guò)程。
0.2.2 Visual Studio 2008 IDE簡(jiǎn)介
單擊“開(kāi)始|所有程序|Microsoft Visual Studio 2008”中的“Microsoft Visual Studio 2008”可執(zhí)行文件,打開(kāi)VS2008的開(kāi)始界面,如圖0.8所示。圖中標(biāo)注出了需要注意的各個(gè)區(qū)域。其中開(kāi)始學(xué)習(xí)文檔,提供一些入門(mén)者案例和文檔,讀者除了看書(shū)之外,也可以經(jīng)常閱讀這些文檔,有助于了解一些更深入的知識(shí)點(diǎn)。VS開(kāi)發(fā)新聞區(qū)域,如果連接了網(wǎng)絡(luò),則會(huì)顯示一些最新的VS開(kāi)發(fā)文檔和注意事項(xiàng)。

圖0.8 VS2008的開(kāi)始界面
單擊“文件|新建|項(xiàng)目”菜單,打開(kāi)VS 2008提供的模板窗口,如圖0.9所示。一定要注意“選擇框架版本”列表框,這里默認(rèn)是.NET 3.5框架,但其支持.NET 3.0和.NET 2.0框架版本。如果要開(kāi)發(fā)舊版本的程序,可通過(guò)此列表選擇。

圖0.9 新建項(xiàng)目模板
0.2.3 實(shí)現(xiàn)第一個(gè)ASP.NET程序
單擊“開(kāi)始”|“所有程序”|“Microsoft Visual Studio 2008”中的“Microsoft Visual Studio 2008”命令,啟動(dòng)Visual Studio 2008,如圖0.10所示。

圖0.10 Visual Studio.NET起始頁(yè)面
Visual Studio 2008提供了兩種新建項(xiàng)目的方式:一種是在Visual Studio.NET的起始頁(yè)的“最近的項(xiàng)目”選項(xiàng)卡中單擊“新建”|“項(xiàng)目”命令,出現(xiàn)如圖0.11所示的“新建網(wǎng)站”對(duì)話(huà)框;另一種是單擊Visual Studio.NET的“文件”|“新建”|“網(wǎng)站”命令。

圖0.11 “新建網(wǎng)站”對(duì)話(huà)框
Visual Studio.NET已經(jīng)預(yù)定義了不同類(lèi)型的網(wǎng)站模板,用戶(hù)可以根據(jù)不同的開(kāi)發(fā)任務(wù)選擇其一。本書(shū)主要講的是Visual C#開(kāi)發(fā)ASP.NET網(wǎng)站。因此在“新建網(wǎng)站”對(duì)話(huà)框中,將“語(yǔ)言”選項(xiàng)設(shè)定為Visual C#,將“模板”選項(xiàng)設(shè)定為ASP.NET Web Site,在“位置”文本框中填入項(xiàng)目要保存的位置。單擊“確定”按鈕,新建了一個(gè)Visual C#項(xiàng)目中的ASP.NET網(wǎng)站應(yīng)用程序,如圖0.12所示。

圖0.12 新建一個(gè)Visual C# ASP.NET項(xiàng)目
此時(shí)應(yīng)用程序會(huì)生成兩個(gè)文件:一個(gè)擴(kuò)展名為“aspx”的文件和一個(gè)名字相同但擴(kuò)展名為“cs”的文件。其中“aspx”文件是必需的,是ASP.NET程序的界面;“cs”是C#源代碼文件的擴(kuò)展名,C#源代碼文件實(shí)現(xiàn)ASP.NET程序的功能。
在新的應(yīng)用程序建立后,會(huì)生成一個(gè)空白窗體,也就是擴(kuò)展名為“aspx”的文件。將其保存為“Default.aspx”。“Default.aspx”文件的代碼如下:
1. <%@Page Language="C#"AutoEventWireup="true" CodeFile="Default.aspx.cs"Inherits="_Default"%> 2. <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" 3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4. <html xmlns="http://www.w3.org/1999/xhtml"> 5. <head runat="server"> 6. <title>無(wú)標(biāo)題頁(yè)</title> 7. </head> 8. <body> 9. <form id="form1"runat="server"> 10. <div> 11. 12. </div> 13. </form> 14. </body> 15. </html>
在<div>和</div>中間加入代碼<asp:Label ID="tt" Runat="server" Font-Size = "30" Font-Italic="True"ForeColor="#485866">Study ASP.NET</asp:Label>,保存。然后運(yùn)行這個(gè)例子,效果如圖0.13所示。

圖0.13 第一個(gè)ASP.NET程序
0.3 IIS 7 Web服務(wù)配置
IIS是Internet Information Server的簡(jiǎn)稱(chēng)。IIS作為當(dāng)今流行的Web服務(wù)器之一,提供了強(qiáng)大的Internet和Intranet服務(wù)功能。在Windows的各個(gè)版本中,Windows的服務(wù)器版本通常默認(rèn)安裝IIS,而其他版本需要用戶(hù)自行安裝。例如,Windows XP Professional和Vista默認(rèn)是不安裝IIS,需要用戶(hù)手動(dòng)安裝。
本節(jié)主要介紹IIS 7的安裝和配置,主要操作系統(tǒng)是Windows Vista。
0.3.1 安裝IIS 7
IIS 7不需要下載,一般都在Windows操作系統(tǒng)的安裝盤(pán)內(nèi),具體安裝步驟如下。
1 單擊“開(kāi)始”|“控制面板”|“程序和功能”命令,打開(kāi)“卸載和更改程序”窗口。
2 單擊左側(cè)的“打開(kāi)和關(guān)閉Windows功能”,彈出“Windows功能”對(duì)話(huà)框,如圖0.14所示。

圖0.14 “Windows功能”對(duì)話(huà)框
3 圖0.14中可以找到Internet信息服務(wù)的選項(xiàng),展開(kāi)其所有節(jié)點(diǎn),如圖0.15所示。

圖0.15 Internet信息服務(wù)的選項(xiàng)
4 一定要選中“Web管理工具”和“萬(wàn)維網(wǎng)服務(wù)”的所有內(nèi)容,單擊“確定”按鈕,最后完成IIS安裝。
安裝完畢之后,要測(cè)試IIS 7.0安裝是否正確。IIS 7.0正確安裝之后,系統(tǒng)會(huì)自動(dòng)建立一個(gè)默認(rèn)Web站點(diǎn)。用戶(hù)只需檢驗(yàn)是否能夠正確訪(fǎng)問(wèn)該網(wǎng)站,就可以判斷IIS 7.0是否正確安裝。具體操作步驟如下所列。
1 單擊“開(kāi)始”|“控制面板”命令,打開(kāi)“控制面板”窗口。
2 雙擊“管理工具”圖標(biāo),進(jìn)入“管理工具”窗口。雙擊“Internet信息服務(wù)管理器”圖標(biāo),打開(kāi)“Internet信息服務(wù)管理器”窗口,如圖0.16所示。

圖0.16 “Internet信息服務(wù)管理器”窗口
3 在左側(cè)的Default Web Site節(jié)點(diǎn)單擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“瀏覽”命令。系統(tǒng)會(huì)打開(kāi)一個(gè)IE窗口顯示該網(wǎng)頁(yè),如圖0.17所示。

圖0.17 IIS測(cè)試網(wǎng)頁(yè)
用戶(hù)也可以直接打開(kāi)IE瀏覽器,在地址欄中輸入本機(jī)的網(wǎng)址,可以是localhost/(localhost代表本機(jī)的默認(rèn)網(wǎng)址)或者127.0.0.1/(IP地址127.0.0.1代表本機(jī)),查看是否能打開(kāi).asp或.aspx類(lèi)型的文件。如果能正常打開(kāi),就證明IIS已經(jīng)正確安裝和運(yùn)行了。
0.3.2 配置 IIS 7支持的.NET版本
默認(rèn)的IIS服務(wù)器配置并不一定適合用戶(hù),通常需要進(jìn)行一定的修改。例如,訪(fǎng)問(wèn)IP、主目錄等。操作步驟如下所示。
1 打開(kāi)“Internet信息服務(wù)管理器”窗口。
2 在“Default Web Site”節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“編輯綁定”命令,彈出“網(wǎng)站綁定”窗口,如圖0.18所示。

圖0.18 “網(wǎng)站綁定”對(duì)話(huà)框
3 選中默認(rèn)的一條綁定記錄,單擊“編輯”按鈕,選擇IIS服務(wù)所使用的IP地址。如果選擇了IP地址,客戶(hù)端瀏覽器就可以通過(guò)IP地址來(lái)訪(fǎng)問(wèn)此網(wǎng)站,如圖0.19所示。

圖0.19 “編輯網(wǎng)站綁定”窗口
4 關(guān)閉這些窗口,右擊“Default Web Site”節(jié)點(diǎn),選擇“高級(jí)屬性”菜單,打開(kāi)“高級(jí)設(shè)置”窗口,如圖0.20所示。

圖0.20 “高級(jí)設(shè)置”窗口
5 單擊物理路徑后面的“”按鈕,可以更改網(wǎng)頁(yè)文件的存放位置和起始位置。當(dāng)安裝完IIS 7.0時(shí),默認(rèn)的主目錄是“C:\Inetpub\wwwroot\”。
說(shuō)明
如果操作系統(tǒng)安裝在D盤(pán),則默認(rèn)的主目錄是“D:\Inetpub\wwwroot\”。
6 關(guān)閉所有窗口,單擊“Default Web Site”,在其右側(cè)的功能視圖中可以看到有一項(xiàng)“默認(rèn)文檔”,雙擊此項(xiàng)后,打開(kāi)的界面如圖0.21所示。這里可以看到站點(diǎn)默認(rèn)的首頁(yè)名稱(chēng)為iisstart.htm、Default.htm 等。當(dāng)用戶(hù)直接訪(fǎng)問(wèn)網(wǎng)站時(shí),服務(wù)器按照列表順序依次尋找文檔。用戶(hù)也可以直接在文本框內(nèi)添加新的文檔。

圖0.21 默認(rèn)文檔
0.3.3 瀏覽第一個(gè)ASP.NET程序
在設(shè)計(jì)好ASP.NET應(yīng)用程序后,可以通過(guò)按“Ctrl+F5”鍵來(lái)運(yùn)行程序。但所有的程序都是通過(guò)IIS來(lái)配置的,如果要使用本書(shū)的實(shí)例,需要先在IIS 7中配置好實(shí)例,才可以正常進(jìn)行Web程序的瀏覽,本節(jié)以前面介紹的第一個(gè)實(shí)例為例,學(xué)習(xí)如何瀏覽Web程序。
1 打開(kāi)IIS 7,右擊“Default Web Site”節(jié)點(diǎn),選擇“添加應(yīng)用程序”菜單,打開(kāi)“添加應(yīng)用程序”對(duì)話(huà)框,如圖0.22所示。

圖0.22 “添加應(yīng)用程序”對(duì)話(huà)框
2 在“別名”文本框內(nèi),輸入程序的名稱(chēng),就是要瀏覽的程序的別名,本例為第一個(gè)程序命名為“FirstWeb”,單擊“物理路徑”文本框后面的“”按鈕。打開(kāi)“瀏覽文件夾”對(duì)話(huà)框,選擇源代碼所在的路徑,如果是光盤(pán)文件,就選中光盤(pán)下的源代碼文件夾。
3 添加完應(yīng)用程序的別名和路徑后,單擊“確定”按鈕。在“Default Web Site”節(jié)點(diǎn)下,就會(huì)生成一個(gè)名為“FirstWeb”的節(jié)點(diǎn)。右擊此節(jié)點(diǎn),選擇“瀏覽”菜單,則會(huì)打開(kāi)IE 瀏覽器,運(yùn)行效果與前面創(chuàng)建的第一個(gè)ASP.NET程序相同。
注意
如果是在VS 2008中新創(chuàng)建的Web程序,會(huì)自動(dòng)在IIS 7中生成一個(gè)應(yīng)用程序節(jié)點(diǎn)。
0.4 C# 3.0語(yǔ)言基礎(chǔ)
C#(讀作C Sharp)是一門(mén)新興的開(kāi)發(fā)語(yǔ)言,本節(jié)主要介紹C#語(yǔ)言的由來(lái),以及C#與以前的開(kāi)發(fā)語(yǔ)言的區(qū)別,最后還介紹了C#在Web應(yīng)用中的地位。
提示
當(dāng)前的最新C#版本是.NET 3.5框架下的C# 3.0。
0.4.1 C#簡(jiǎn)介
對(duì)C#的由來(lái)有兩種解釋?zhuān)簭淖置娴囊饬x來(lái)解釋?zhuān)荂語(yǔ)言的開(kāi)發(fā)利器;從Microsoft給出的解釋?zhuān)荂++的升級(jí)語(yǔ)言,具有比C++更優(yōu)越的開(kāi)發(fā)特性。
C#是Web開(kāi)發(fā)的一種重要語(yǔ)言,Microsoft將C#發(fā)展成為Java語(yǔ)言的重要對(duì)手。在Microsoft提供的.NET框架中,可以用C#開(kāi)發(fā)C/S應(yīng)用,也可以開(kāi)發(fā)Web應(yīng)用,并且可以在一個(gè)項(xiàng)目中混合使用C#和VB等語(yǔ)言,這從某種意義上講,.NET框架和Java的虛擬機(jī)有很大的相似。C#的語(yǔ)法規(guī)則和C++非常相似,有C語(yǔ)言基礎(chǔ)的開(kāi)發(fā)者比較容易上手。
C#的優(yōu)點(diǎn)概括如下:
○ 支持快速開(kāi)發(fā):快速開(kāi)發(fā)曾經(jīng)是VB語(yǔ)言的一大特色,而C#整合了這種特色,借助于Visual Studio開(kāi)發(fā)工具,可以通過(guò)拖放的形式添加組件,并自動(dòng)生成組件需要的代碼,同時(shí)在VS 2008中,自動(dòng)生成的代碼與手動(dòng)控制的代碼相隔離,讓開(kāi)發(fā)人員更容易地檢查自己的設(shè)計(jì)。
○ 支持面向?qū)ο螅好嫦驅(qū)ο螅∣bject-Oriented)是開(kāi)發(fā)程序的一種機(jī)制,是專(zhuān)指在程序設(shè)計(jì)中采用封裝、繼承、抽象等設(shè)計(jì)方法,其重點(diǎn)是類(lèi)的設(shè)計(jì)。而C#中連一個(gè)字符串都是面向?qū)ο笮偷脑O(shè)計(jì)。
○ 對(duì)XML強(qiáng)大的支持:XML語(yǔ)言已經(jīng)成為一種標(biāo)準(zhǔn)的數(shù)據(jù)描述語(yǔ)言,支持XML開(kāi)發(fā)也成了衡量一種語(yǔ)言是否強(qiáng)大的標(biāo)準(zhǔn)。C#對(duì)XML語(yǔ)言的支持,體現(xiàn)在強(qiáng)有力的XML框架類(lèi)中,尤其是命名空間“System.Xml”中,提供了一系列對(duì)XML讀取的操作類(lèi),使XML程序的開(kāi)發(fā)變得非常容易。
○ 面向組件的開(kāi)發(fā):面向組件是繼面向?qū)ο蠛蟮挠忠涣餍汹厔?shì),屬于設(shè)計(jì)方法的一種。在C#中最具特色的組件就是ADO.NET數(shù)據(jù)訪(fǎng)問(wèn)組件。組件設(shè)計(jì)也是C#考慮最多的一種形式,組件可以在開(kāi)發(fā)中直接使用,也可以調(diào)用對(duì)象提供的方法來(lái)操作。
0.4.2 變量和常量
常量一般是程序中不變的數(shù)據(jù),如2,“中國(guó)”等,常量也有不同的類(lèi)型,如2屬于數(shù)值型,而“中國(guó)”屬于字符型。在C#中定義常量的語(yǔ)法如下所示。
public const string CHINA = "中國(guó)";
上述代碼中,“const”是定義常量的標(biāo)識(shí),如果沒(méi)有此標(biāo)識(shí),即使為“CHINA”指定固定的值,也不算是常量。“string”用來(lái)定義常量的類(lèi)型,注意常量在命名時(shí),通常使用大寫(xiě)字母。
變量就是經(jīng)常發(fā)生變化的數(shù)據(jù),如計(jì)算登錄人數(shù)的變量“count”,可能隨著登錄用戶(hù)的不斷增加而變化。在C#中定義變量的語(yǔ)法如下所示。
public int count = 10;
其中“int”表示變量的類(lèi)型,“count”表示變量名,變量名可以隨意定義,但最好可以突出此變量的意義所在。注意變量名一般為英文。
變量可以不需要初始值,如下所示的定義也是正確的。
public int count;
C#中變量的類(lèi)型可以概括為3種:文本類(lèi)型、數(shù)值類(lèi)型和其他類(lèi)型。
(1)文本類(lèi)型主要包括string和char,其中string用來(lái)存放字符串,char用來(lái)存放單個(gè)字符,兩者的定義語(yǔ)法如下所示,其中string變量的值用雙引號(hào)包括,而char變量的值用單引號(hào)包括。
string name = "歡迎到北京來(lái)"; char word = 'W';
(2)數(shù)值類(lèi)型包含的內(nèi)容比較多,如整數(shù)、浮點(diǎn)數(shù)、長(zhǎng)整數(shù)等,表0.1列出了C#中常見(jiàn)的數(shù)值類(lèi)型,并演示了使用這些類(lèi)型的語(yǔ)法。
表0.1 C#中常見(jiàn)的數(shù)值類(lèi)型

(3)其他類(lèi)型主要包括日期型、Object類(lèi)型和布爾型。其中Object是C#的通用類(lèi)型,C#中所有的類(lèi)型都是從Object發(fā)展而來(lái)的。下面演示這3種類(lèi)型的使用語(yǔ)法。
DateTime date ; //日期型 object data; //object類(lèi)型 bool ifExit = true; //布爾型
0.4.3 運(yùn)算符
運(yùn)算符是C#進(jìn)行數(shù)據(jù)處理的基礎(chǔ),C#中的運(yùn)算符主要分為5類(lèi):算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符和“?”運(yùn)算符。
1.算術(shù)運(yùn)算符
算術(shù)運(yùn)算符是常用的計(jì)算符號(hào),如“+”、“-”、“*”、“/”等。算術(shù)運(yùn)算符又分為一目運(yùn)算符和二目運(yùn)算符,其中一目指只有一個(gè)變量參與的運(yùn)算,二目是指兩個(gè)變量參與的運(yùn)算。其中“+”、“-”、“*”、“/”這些運(yùn)算符,必須有兩個(gè)變量參與才可以實(shí)現(xiàn)運(yùn)算,而“++”、“--”這種自增、自減的操作,只有一個(gè)變量參與。下面的代碼演示了這些常用的算術(shù)運(yùn)算符。
int a = 10; int b = 11; int add=a+b; //"+" int incre = b - a;//"-" int sum=a*b; //"*" a++; //自增 b--; //自減
2.邏輯運(yùn)算符
邏輯運(yùn)算符一般與關(guān)系運(yùn)算符結(jié)合使用。關(guān)系運(yùn)算符用來(lái)比較兩個(gè)數(shù)據(jù),如“= =”、“>=”等,而邏輯運(yùn)算符用來(lái)判斷兩個(gè)或多個(gè)使用關(guān)系運(yùn)算的語(yǔ)句。邏輯運(yùn)算符包含的運(yùn)算如表0.2所示。關(guān)系運(yùn)算符包含的運(yùn)算如表0.3所示。
表0.2 邏輯運(yùn)算符包含的運(yùn)算

表0.3 關(guān)系運(yùn)算符包含的運(yùn)算

下面的代碼演示了邏輯運(yùn)算符和關(guān)系運(yùn)算符的使用。
int a = 10; int b = 11; if(a>b) //關(guān)系運(yùn)算符 label2.Text = (a + b).ToString(); if ((a <= b) || (a <= 11)) //邏輯運(yùn)算符和關(guān)系運(yùn)算 label2.Text = a.ToString(); if (a > 0 && b > 0)//邏輯運(yùn)算符和關(guān)系運(yùn)算 label2.Text = b.ToString();
3.賦值運(yùn)算符
賦值運(yùn)算符是C#最基本的運(yùn)算,就是為某個(gè)變量指定值。“int a=10;”是一個(gè)最簡(jiǎn)單的賦值運(yùn)算,“等號(hào)”左邊一般為變量的名稱(chēng),右邊為變量的值,有時(shí)候右邊也可能是另一個(gè)變量。下面演示常用的賦值運(yùn)算。
int a = 0; int b; if(a!=0) //關(guān)系運(yùn)算 b=a; //賦值運(yùn)算 else b=a++; //賦值運(yùn)算
4.?運(yùn)算符
?運(yùn)算符通常被稱(chēng)為三目運(yùn)算符,因?yàn)橛?個(gè)變量參與其中。下面代碼是一個(gè)很簡(jiǎn)單的?運(yùn)算。
b = (a > 0) ? a : a++;
上述表達(dá)式中有兩個(gè)關(guān)鍵符號(hào)“?”和“:”,其中?前邊通常是一個(gè)關(guān)系運(yùn)算,?后面緊跟兩個(gè)變量。?運(yùn)算符的意思是判斷?前面的表達(dá)式,如果表達(dá)式結(jié)果為true,則選擇?后面的第一個(gè)值,如果表達(dá)式結(jié)果為false,則選擇?后面的第二個(gè)值,兩個(gè)值之間以“:”間隔。
下面代碼中,b的值為“1”。
int a = 1; int b; b=(a>0)?a:a++; //?運(yùn)算
0.4.4 流程控制
一個(gè)應(yīng)用程序,通常包含了復(fù)雜的應(yīng)用邏輯,要實(shí)現(xiàn)這些邏輯,就必須進(jìn)行流程控制,本節(jié)介紹C#常用的5種流程控制語(yǔ)句:if、switch、for、foreach、while。
1.if語(yǔ)句
if語(yǔ)句用來(lái)判斷條件,符合條件則進(jìn)入if語(yǔ)句的代碼塊,不符合則執(zhí)行if代碼塊后面的內(nèi)容。if語(yǔ)句的語(yǔ)法如下所示。
if(a >0){}
如果有多個(gè)判斷條件,可以使用if…else if的組合語(yǔ)句,使用語(yǔ)法如下所示。
if(a>0){ } else if(a=0){ } else if(a<0){ }
如果有且只有兩個(gè)判斷條件,可以使用if…else…的組合語(yǔ)句,使用語(yǔ)法如下所示。
if (a > 0) { }
else { }
以下代碼演示了一個(gè)實(shí)例,判斷a是否大于10,如果大于10,則a自減,否則a自增。
int a=15; if (a > 10) //是否大于10 { a--; } else { a++; }
2.switch語(yǔ)句
switch語(yǔ)句也是條件判斷語(yǔ)句,其主要用于兩個(gè)以上條件的判斷。switch語(yǔ)句的語(yǔ)法如下所示。
1. switch() 2. { 3. case"": 4. break; 5. case"": 6. break; 7. default: 8. break; 9. }
上述代碼中,switch后面括號(hào)中的內(nèi)容表示要判斷的值。語(yǔ)句中的case關(guān)鍵字,表示一種判斷。關(guān)鍵字break表示此次判斷結(jié)束并返回。default關(guān)鍵字是指如果括號(hào)中的內(nèi)容與以上的所有case都不相符時(shí)默認(rèn)的執(zhí)行語(yǔ)句。
在下面演示代碼中,welcome的值最終為“奧運(yùn)北京”。
1. string city="北京"; 2. string welcome; 3. switch(city) 4. { 5. case"北京": 6. welcome="奧運(yùn)北京"; 7. break; 8. case"上海": 9. welcome="上海世博"; 10. break; 11. default: 12. welcome="歡迎您來(lái)到中國(guó)"; 13 14. }
3.for語(yǔ)句
for語(yǔ)句表示一個(gè)循環(huán),其語(yǔ)法如下所示。其中布爾表達(dá)式是允許執(zhí)行循環(huán)的條件。注意括號(hào)中的三個(gè)數(shù)據(jù)以“;”間隔。
for(初始值;布爾表達(dá)式;更新值)
下面的代碼是一個(gè)例子,演示如何輸出1~10的數(shù)字。其中初始值為1,條件是i<11,每次循環(huán)后i自增。
String str=""; for (int i = 1; i < 11; i++) { str=str+i.ToString(); } label2.Text=str;
4.foreach語(yǔ)句
foreach也是一個(gè)循環(huán),通常用其實(shí)現(xiàn)對(duì)集合的遍歷,因?yàn)榇搜h(huán)的條件不是布爾表達(dá)式,而是獲取集合中的所有對(duì)象。foreach的使用語(yǔ)法如下所示。
foreach(集合個(gè)例 變量名 in 集合)
下面的代碼演示了一個(gè)字符串?dāng)?shù)組的遍歷過(guò)程。
//定義一個(gè)字符串?dāng)?shù)組 string[] arrayStr = new string[] { "北京", "上海", "深圳" }; string strLong=""; foreach (string str in arrayStr)//遍歷數(shù)組中的每個(gè)字符串 { strLong = strLong + str; //連接字符串 } label2.Text= strLong;
5.while語(yǔ)句
while語(yǔ)句是一個(gè)標(biāo)準(zhǔn)循環(huán),其語(yǔ)法如下所示。判斷布爾表達(dá)式的值,如果值為true,則執(zhí)行循環(huán)語(yǔ)句的內(nèi)容,否則不執(zhí)行。
while(布爾表達(dá)式)
下面的代碼輸出1~10個(gè)數(shù)字,排列順序?yàn)榈剐颉C看螆?zhí)行一次循環(huán),a都自減,當(dāng)a=0時(shí)就不再執(zhí)行循環(huán)。
int a=10; string str=""; while (a > 0) { str=str+a.ToString(); a--; } label2.Text=str;
0.4.5 隱性局部變量
在JavaScript中,一般不用int、string等來(lái)定義變量,而是直接用var,這一直被認(rèn)為是類(lèi)型不安全的表現(xiàn)。在C#3.0中,依然引入了“var”關(guān)鍵字,但C#的類(lèi)型轉(zhuǎn)換機(jī)制提供了類(lèi)型安全的保障。下面是幾個(gè)常見(jiàn)的隱性局部變量。
var i = 6; var str = " hello world"; var d = 20.12; var myary=new int[]{1,2,3,4,5};
上面的變量都使用了var關(guān)鍵字定義,其效果類(lèi)似于下面的代碼。
int i =6; string str = " hello world"; double d = 20.12; int[]myary=new int[]{1,2,3,4,5};
var的用法比較簡(jiǎn)單,但需要注意以下幾點(diǎn):
○ var必須包含初始化器。
○ 初始化器必須是一個(gè)表達(dá)式。
○ 初始化器的編譯器類(lèi)型不能是Null類(lèi)型。
○ 如果局部變量聲明了多個(gè)聲明符,這些變量必須具備相同的編譯器類(lèi)型。
0.4.6 Lambda表達(dá)式
Lambda表達(dá)式和匿名方法有關(guān),是一種簡(jiǎn)約化表述匿名方法的函數(shù)表達(dá)式。其表述語(yǔ)法如下所示,類(lèi)似于C++的指針。
Param => Expr;
Lambda表達(dá)式的作用,就是提供一種更簡(jiǎn)練的方法,來(lái)書(shū)寫(xiě)匿名方法,最常用在泛型匿名方法的簡(jiǎn)化上。下面是一個(gè)通過(guò)匿名方法匹配字符串的實(shí)例。
1. static void Main(string[]args) 2. { 3. string[]list=new string[]{"efgcd","ef","jsp","asp.net","php"}; 4. string[]listAfter=Array.FindAll(list, //利用委托進(jìn)行匹配 5. delegate(string s) 6. { 7. return s.IndexOf("ef")>=0; 8. } 9. ); 10. foreach(string str in listAfter) //輸出滿(mǎn)足條件的字符串 11. { 12. Console.WriteLine(str); 13. } 14. }
下面使用Lambda表達(dá)式修訂上面的方法。
static void Main(string[] args) { string[]list=new string[]{"efgcd","ef","jsp","asp.net","php" }; //使用Lambda表達(dá)式 string[]listAfter=Array.FindAll(list,s=>(s.IndexOf("ef")>=0)); //輸出滿(mǎn)足條件的字符串 foreach(string str in listAfter) { Console.WriteLine(str); } }
可以看到“s => (s.IndexOf("ef") >= 0)”表達(dá)式的寫(xiě)法更簡(jiǎn)單,缺點(diǎn)就是剛開(kāi)始讀起來(lái)有些費(fèi)勁。
0.4.7 LINQ集成查詢(xún)概述
在查詢(xún)數(shù)據(jù)庫(kù)時(shí),通常使用SQL語(yǔ)言來(lái)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和讀取,而在C# 3.0中,提出了新的集成查詢(xún)語(yǔ)言L(fǎng)INQ。LINQ之所以成為集成查詢(xún)語(yǔ)言,是因?yàn)槠洳粌H可以查詢(xún)數(shù)據(jù)庫(kù),還可以查詢(xún)對(duì)象。本節(jié)介紹基本的LINQ查詢(xún)語(yǔ)法,具體的LINQ to SQL方法,會(huì)在第11章介紹。
本節(jié)介紹的LINQ語(yǔ)法主要針對(duì)SQL語(yǔ)法而言,把常用的SQL語(yǔ)法轉(zhuǎn)化為L(zhǎng)INQ。
1.where語(yǔ)句
where語(yǔ)句用來(lái)查詢(xún)數(shù)據(jù)中符合條件的記錄。在LINQ中,where語(yǔ)句的語(yǔ)法如下所示。
from c in customs where c.city == "beijing" select c
其中表名是“customs”,而表的別名是c,查詢(xún)條件是“city="beijing"”。
2.select語(yǔ)句
Select語(yǔ)句用來(lái)選擇需要顯示的字段,如果要顯示全部字段,則語(yǔ)法如下所示。
from c in customs where c.city == "beijing" select c
如果要顯示某一個(gè)字段,則語(yǔ)法如下所示。
from c in customs where c.city == "北京" select c.name
3.group語(yǔ)句
group語(yǔ)句是以分組的形式顯示查詢(xún)的結(jié)果,其語(yǔ)法如下所示。
from c in customs group c.name by c.city
group和by關(guān)鍵字結(jié)合使用,上述代碼表示,按城市(city)分組顯示姓名(name)。
4.order by語(yǔ)句
order by語(yǔ)句用來(lái)按順序顯示數(shù)據(jù),主要是數(shù)據(jù)的升序和降序排列。order by的語(yǔ)法如下所示。
from c in customs order by c.name select new{c.name,c.phone}
其中默認(rèn)的是升序,需要降序,使用關(guān)鍵字“desc”,如果是要第二個(gè)排序字段降序,則使用下面的語(yǔ)法形式。
from c in customs order by c.name,c.phone desc select new{c.name,c.city}
5.into語(yǔ)句
into語(yǔ)句會(huì)產(chǎn)生一個(gè)新的表,表示將此表的查詢(xún)結(jié)果生成到另外一個(gè)表中,其使用語(yǔ)法如下所示。
from c in customs group c by c.city into n select new{country=n.key,custcount=n.group.count()}
0.5 編碼規(guī)范
在編寫(xiě)程序時(shí),好的編碼規(guī)范非常重要,一方面可以便于后期的程序維護(hù)和管理,另一方面,具有良好規(guī)范的編碼可以大大降低開(kāi)發(fā)時(shí)程序員犯錯(cuò)誤的幾率。
0.5.1 好的編碼結(jié)構(gòu)
對(duì)比下面兩段代碼,它們的功能相同,都定義了一個(gè)矩形類(lèi),并包含求面積的方法。
1.第一段代碼
1. public class Rectangle 2. { 3. public double dblWidth; 4. public double dblHeitht; 5. 6. public Rectangle(double_dblWidth,double_dblHeight) 7. { 8. this.dblWidth=_dblWidth; 9. this.dblHeitht=_dblHeight; 10. } 11. 12. public double GetArea() 13. { 14. return this.dblHeitht*this.dblWidth; 15. } 16. }
2.第二段代碼
1. public class Rectangle{ 2. public double dblWidth; 3. public double dblHeitht; 4. public Rectangle(double_dblWidth,double_dblHeight){ 5. this.dblWidth=_dblWidth; 6. this.dblHeitht=_dblHeight; 7. } 8. public double GetArea(){ 9. return this.dblHeitht*this.dblWidth; 10. } 11. }
相信在不作任何解釋的情況下,讀者還是能夠看明白代碼A的內(nèi)容,因?yàn)樗s進(jìn)結(jié)構(gòu)良好,體現(xiàn)了清晰的邏輯結(jié)構(gòu)。而代碼B呢?恐怕就困難多了。
可以看出,良好的代碼層次結(jié)構(gòu)及清晰的代碼邏輯結(jié)構(gòu),可以大大提高代碼的質(zhì)量。一方面可以降低程序員出錯(cuò)的可能性,另一方面,在代碼出現(xiàn)錯(cuò)誤的時(shí)候也很容易查找。
0.5.2 好的注釋風(fēng)格
注釋可以大大提高代碼的可閱讀性,另外在編寫(xiě)程序時(shí),還可以幫助程序員具有更清晰的思路。同樣,仔細(xì)研究下面的兩個(gè)代碼段。
1. ///<summary> 2. /// 接口:形狀 3. ///</summary> 4. public interface IShape 5. { 6. ///<summary> 7. /// 方法:求面積 8. ///</summary> 9. ///<returns></returns> 10. double GetArea(); 11. } 12. 13. ///<summary> 14. /// 矩形類(lèi) 15. ///</summary> 16. public class Rectangle:IShape 17. { 18. public double dblWidth; //寬 19. public double dblHeitht; //高 20. 21. ///<summary> 22. /// 構(gòu)造函數(shù) 23. ///</summary> 24. ///<param name="_dblWidth">寬</param> 25. ///<param name="_dblHeight">高</param> 26. public Rectangle(double_dblWidth,double_dblHeight) 27. { 28. this.dblWidth=_dblWidth; 29. this.dblHeitht=_dblHeight; 30. } 31. 32. ///<summary> 33. /// 求矩形面積 34. ///</summary> 35. ///<returns>面積</returns> 36. public double GetArea() 37. { 38. return this.dblHeitht*this.dblWidth; 39. } 40. }
很明顯,有了注釋之后,完全沒(méi)有必要對(duì)這段代碼進(jìn)行解釋了,讀者一定能夠看懂。另外,VS.NET提供了良好的自動(dòng)注釋功能,在方法或者類(lèi)前面用“///”添加注釋時(shí),會(huì)自動(dòng)生成大量的注釋格式,只需要在相應(yīng)的位置添入注釋項(xiàng)即可。
在此推薦盡量使用“///”對(duì)類(lèi)或方法進(jìn)行注釋?zhuān)@樣做還有另外一個(gè)好處,當(dāng)引用這個(gè)類(lèi)或者方法時(shí),VS.NET會(huì)自動(dòng)提示注釋的內(nèi)容。如圖0.23所示的是在引用Rectangle類(lèi)的構(gòu)造函數(shù)時(shí)的情況。

圖0.23 根據(jù)方法注釋給出提示
這樣,在調(diào)用方法時(shí)便可以更加方便。
0.5.3 好的命名規(guī)范
在C#編碼中,常常使用到的命名規(guī)范有:
○ Pascal大小寫(xiě)規(guī)范:所有單詞第一個(gè)字母大寫(xiě),其他字母小寫(xiě)。
○ Camel大小寫(xiě)形式:除了第一個(gè)單詞,所有單詞第一個(gè)字母大寫(xiě),其他字母小寫(xiě)。
在C#中,推薦的命名規(guī)范如下:
(1)類(lèi)名使用Pascal大小寫(xiě)形式,如:
1. public class HelloWorld 2. { 3. … 4. }
(2)方法使用Pascal大小寫(xiě)形式,如:
1. public class HelloWorld 2. { 3. void SayHello(string name) 4. { 5. … 6. } 7. }
(3)變量和方法參數(shù)使用Camel大小寫(xiě)形式,如:
1. public class HelloWorld 2. { 3. int totalCount=0; 4. void SayHello(string name) 5. { 6. string fullMessage="Hello"+name; 7. … 8. } 9. }
也可以加前綴以表示變量的類(lèi)型,但實(shí)際上C#并不推薦這種方式。
0.5.4 避免文件過(guò)大
在開(kāi)發(fā)中,應(yīng)盡量避免使用大文件。如果一個(gè)文件里的代碼超過(guò)300~400行,就可以考慮將代碼分開(kāi)到不同的類(lèi)中;如無(wú)法避免,則可以考慮定義partial類(lèi)。另外,也要盡量避免寫(xiě)太長(zhǎng)的方法,一個(gè)較理想的方法代碼在1~25行之間,方法名應(yīng)盡量體現(xiàn)其功能。比較下面兩段代碼:
(1)一個(gè)好的類(lèi),功能獨(dú)立的方法盡量分開(kāi)。
1. /// 矩形類(lèi) 2. public class Rectangle:IShape 3. { 4. public double dblWidth; //寬 5. public double dblHeitht; //高 6. 7. /// 求矩形面積 8. public double GetArea() 9. { 10. return this.dblHeitht*this.dblWidth; 11. } 12. 13. /// 求周長(zhǎng) 14. public double GetRoundLength() 15. { 16. return this.dblHeith+this.dblWidth; 17. } 18. }
(2)不好的類(lèi):
1. /// 矩形類(lèi) 2. public class Rectangle:IShape 3. { 4. public double dblWidth; //寬 5. public double dblHeitht; //高 6. 7. /// 求矩形面積和周長(zhǎng) 8. public double GetData(ref double_dblArea,ref double_dblRoundLengh) 9. { 10. _dblArea=this.dblHeitht*this.dblWidth; 11. _dblRoundLengh=this.dblHeitht+this.dblWidth; 12. } 13. }
第二段代碼把多個(gè)功能融合在一個(gè)方法里,一方面邏輯比較混亂,另一方面也容易使方法變得非常大,不易管理。
承上啟下
■ 學(xué)完本章后,讀者需要回答:
1.用戶(hù)在瀏覽網(wǎng)頁(yè)時(shí),頁(yè)面文件經(jīng)歷了怎樣的過(guò)程才呈現(xiàn)在用戶(hù)眼前?
2.靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)有何區(qū)別?
3.了解Java、JavaScript、CSS,以及Flash嗎?
4.能否獨(dú)立完成最簡(jiǎn)單的一個(gè)ASP.NET程序,在頁(yè)面上顯示幾行字?
5.C#是什么?有哪些數(shù)據(jù)類(lèi)型?
6.如何定義C#合法的變量和常量?
7.C#中的運(yùn)算符有哪些?了解它們的優(yōu)先級(jí)別嗎?
8.能夠使用流程控制語(yǔ)句組織代碼嗎?
9.如何從編碼結(jié)構(gòu)、注釋風(fēng)格、命名規(guī)范,以及控制文件大小方面,寫(xiě)出高質(zhì)量的代碼?
■ 在下一章中,讀者將會(huì)了解:
1.動(dòng)態(tài)網(wǎng)頁(yè)的運(yùn)行機(jī)制。
2.ASP.NET的功能和特點(diǎn)。
3.ASPX頁(yè)面的構(gòu)成。
4.將C#代碼嵌入HTML中的方法,以及ASP.NET將HTML和C#代碼分離的機(jī)制。
5.利用服務(wù)器控件的事件對(duì)ASPX頁(yè)面作出動(dòng)態(tài)響應(yīng)。
6.利用ASPX頁(yè)面的Page Load事件在頁(yè)面加載時(shí)執(zhí)行命令。
- 數(shù)據(jù)庫(kù)系統(tǒng)原理及MySQL應(yīng)用教程(第2版)
- Java 開(kāi)發(fā)從入門(mén)到精通(第2版)
- Reactive Programming with Swift
- Production Ready OpenStack:Recipes for Successful Environments
- Visual Basic程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)(第4版)
- Python機(jī)器學(xué)習(xí)編程與實(shí)戰(zhàn)
- Android底層接口與驅(qū)動(dòng)開(kāi)發(fā)技術(shù)詳解
- Mastering Gephi Network Visualization
- 征服C指針(第2版)
- Responsive Web Design with jQuery
- Offer來(lái)了:Java面試核心知識(shí)點(diǎn)精講(框架篇)
- 跟小樓老師學(xué)用Axure RP 9:玩轉(zhuǎn)產(chǎn)品原型設(shè)計(jì)
- Learning Redis
- C++ Game Development Cookbook
- Mastering Python for Data Science