web應(yīng)用程序開發(fā)教程 第03章_第1頁
web應(yīng)用程序開發(fā)教程 第03章_第2頁
web應(yīng)用程序開發(fā)教程 第03章_第3頁
web應(yīng)用程序開發(fā)教程 第03章_第4頁
web應(yīng)用程序開發(fā)教程 第03章_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 第第3章章 Visual C#程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)本章知識(shí)點(diǎn)本章知識(shí)點(diǎn)pC#C#語言基礎(chǔ)語言基礎(chǔ)p數(shù)據(jù)類型數(shù)據(jù)類型p常量和變量常量和變量p運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式p流程控制語句流程控制語句p類和對(duì)象類和對(duì)象3.1 C#語言基礎(chǔ)語言基礎(chǔ)p C#C#語言的基本特點(diǎn)語言的基本特點(diǎn)p .NET Framework.NET Framework和和C#C#p 使用使用Visual Studio 2005Visual Studio 2005p 編寫一個(gè)簡(jiǎn)單的編寫一個(gè)簡(jiǎn)單的C#C#例子例子3.1.1 C#語言的基本特點(diǎn)語言的基本特點(diǎn)p C#C#的英文發(fā)音為的英文發(fā)音為C SharpC Sharp,它

2、是一種最新的、面向?qū)ο?,它是一種最新的、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,程序員可以使用它方便、快速地編的程序設(shè)計(jì)語言,程序員可以使用它方便、快速地編寫各種基于寫各種基于Microsoft .NETMicrosoft .NET平臺(tái)的應(yīng)用程序。平臺(tái)的應(yīng)用程序。p .NET.NET將將InternetInternet本身作為構(gòu)建新一代操作系統(tǒng)的基礎(chǔ)本身作為構(gòu)建新一代操作系統(tǒng)的基礎(chǔ),并對(duì),并對(duì)InternetInternet和操作系統(tǒng)的設(shè)計(jì)思想進(jìn)行了延伸,和操作系統(tǒng)的設(shè)計(jì)思想進(jìn)行了延伸,使開發(fā)人員能夠創(chuàng)建出與設(shè)備無關(guān)的應(yīng)用程序,更容使開發(fā)人員能夠創(chuàng)建出與設(shè)備無關(guān)的應(yīng)用程序,更容易地實(shí)現(xiàn)易地實(shí)現(xiàn)Internet

3、Internet連接。連接。p 可以使用可以使用Visual StudioVisual Studio開發(fā)開發(fā)C#C#應(yīng)用程序。應(yīng)用程序。 C#語言具有如下主要特點(diǎn)語言具有如下主要特點(diǎn)1 1語法簡(jiǎn)潔語法簡(jiǎn)潔2 2更完善的面向?qū)ο蟪绦蛟O(shè)計(jì)機(jī)制更完善的面向?qū)ο蟪绦蛟O(shè)計(jì)機(jī)制3 3與與WebWeb應(yīng)用的緊密應(yīng)用的緊密3.1.2 .NET Framework和和C#C#語言的編譯和運(yùn)行過程語言的編譯和運(yùn)行過程(1 1)在)在Visual StudioVisual Studio中創(chuàng)建中創(chuàng)建Visual C#Visual C#項(xiàng)目,其中包括項(xiàng)目,其中包括C#C#源文件、資源和引用等。源文件、資源和引用等。C#

4、C#源文件的擴(kuò)展名為源文件的擴(kuò)展名為.cs.cs,可以定義類、接口、窗體等;資源可以是圖像、圖標(biāo)可以定義類、接口、窗體等;資源可以是圖像、圖標(biāo)、文本文件或字符串等;引用是、文本文件或字符串等;引用是MicrosoftMicrosoft公司或第公司或第3 3方提供的組件,通常為方提供的組件,通常為.dll.dll、.ocx.ocx和和.tlb.tlb等類型。等類型。(2 2)使用)使用C#C#編譯器對(duì)編譯器對(duì)Visual C#Visual C#項(xiàng)目進(jìn)行編譯,得到項(xiàng)目進(jìn)行編譯,得到MicrosoftMicrosoft中間語言(中間語言(MSILMSIL),這是一組可以有效地轉(zhuǎn)),這是一組可以有效地

5、轉(zhuǎn)換為本機(jī)代碼且獨(dú)立于換為本機(jī)代碼且獨(dú)立于CPUCPU的指令。的指令。(3 3)Visual C#Visual C#程序運(yùn)行在程序運(yùn)行在.NET Framework.NET Framework平臺(tái)上,由公平臺(tái)上,由公共語言運(yùn)行庫提供支持,同時(shí)使用共語言運(yùn)行庫提供支持,同時(shí)使用.NET Framework.NET Framework提提供的類庫,將供的類庫,將MicrosoftMicrosoft中間語言轉(zhuǎn)換為本地計(jì)算機(jī)代中間語言轉(zhuǎn)換為本地計(jì)算機(jī)代碼,最終在操作系統(tǒng)上運(yùn)行。碼,最終在操作系統(tǒng)上運(yùn)行。3.1.3 使用使用Visual Studio 2005p在在“開始開始”菜單中依次選擇菜單中依次選

6、擇“程序程序”/ /“Microsoft Visual Studio Microsoft Visual Studio 20052005”/ /“Microsoft Visual Studio 2005Microsoft Visual Studio 2005”,啟動(dòng),啟動(dòng)Microsoft Visual Studio Microsoft Visual Studio 20052005窗口。窗口。新建項(xiàng)目新建項(xiàng)目p 在最近打開的項(xiàng)目列表下面,提供了打開和創(chuàng)建網(wǎng)站的超級(jí)鏈接在最近打開的項(xiàng)目列表下面,提供了打開和創(chuàng)建網(wǎng)站的超級(jí)鏈接。單擊。單擊“創(chuàng)建創(chuàng)建”標(biāo)簽后面的標(biāo)簽后面的“項(xiàng)目項(xiàng)目”超級(jí)鏈接,打開超級(jí)

7、鏈接,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 控制臺(tái)應(yīng)用程序項(xiàng)目控制臺(tái)應(yīng)用程序項(xiàng)目Visual Studio窗口窗口1 1窗體設(shè)計(jì)及代碼編輯器窗體設(shè)計(jì)及代碼編輯器2 2解決方案資源管理器解決方案資源管理器3 3屬性窗口屬性窗口3.1.4 編寫一個(gè)簡(jiǎn)單的編寫一個(gè)簡(jiǎn)單的C#例子例子 參照參照11.1.311.1.3小節(jié)介紹的方法創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序項(xiàng)目,項(xiàng)目小節(jié)介紹的方法創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序項(xiàng)目,項(xiàng)目名稱為名稱為HelloWorldHelloWorld。項(xiàng)目的主文件為。項(xiàng)目的主文件為Program.csProgram.cs。1Program.cs的默認(rèn)代碼的默認(rèn)代碼usingSystem;u

8、singSystem.Collections.Generic;usingSystem.Text;namespaceHelloWorldclassProgramstaticvoidMain(stringargs)2在在Main()函數(shù)中添加代碼函數(shù)中添加代碼staticvoidMain(stringargs)Console.WriteLine(HelloWorld!);Console.ReadKey();3運(yùn)行程序運(yùn)行程序p 在菜單中選擇在菜單中選擇“調(diào)試調(diào)試”/ /“啟動(dòng)調(diào)試啟動(dòng)調(diào)試”,或在工具欄,或在工具欄中單擊中單擊“啟動(dòng)調(diào)試啟動(dòng)調(diào)試”按鈕按鈕 可以運(yùn)行當(dāng)前的項(xiàng)目??梢赃\(yùn)行當(dāng)前的項(xiàng)目。4在

9、程序中添加注釋在程序中添加注釋(1 1)注釋符)注釋符/(2 2)注釋符)注釋符/ /* * */ /(3 3)XMLXML文檔注釋標(biāo)記文檔注釋標(biāo)記(1)注釋符)注釋符/文件名:文件名:Program.cs/描述:主程序文件描述:主程序文件/作者:?jiǎn)⒚餍亲髡撸簡(jiǎn)⒚餍?日期:日期:2009-2-18inta=0;/聲明一個(gè)整型變量聲明一個(gè)整型變量a,初始值為,初始值為0(2)注釋符)注釋符/*/*文件名:文件名:Program.cs描述:主程序文件描述:主程序文件作者:?jiǎn)⒚餍亲髡撸簡(jiǎn)⒚餍侨掌冢喝掌冢?009-2-18*/inta=0;/*聲明一個(gè)整型變量聲明一個(gè)整型變量a,初始值為,初始值為0*

10、/intb/*變量變量b*/=0;(3)XML文檔注釋標(biāo)記文檔注釋標(biāo)記/classProgram/主函數(shù)主函數(shù)/命令行參數(shù)命令行參數(shù)staticvoidMain(stringargs)Console.WriteLine(HelloWorld!);/ab/cConsole.ReadKey();3.2 數(shù)據(jù)類型數(shù)據(jù)類型p值類型值類型p引用類型引用類型p類型轉(zhuǎn)換類型轉(zhuǎn)換3.2.1 值類型值類型1 1簡(jiǎn)單類型簡(jiǎn)單類型2 2結(jié)構(gòu)類型結(jié)構(gòu)類型3 3枚舉類型枚舉類型1簡(jiǎn)單類型簡(jiǎn)單類型簡(jiǎn)單類型分類C#數(shù)據(jù)類型.NET Framework系統(tǒng)類型具體說明整數(shù)類型byteSystem.Byte無符號(hào)8位整數(shù),取值

11、范圍為0255sbyteSystem.SByte有符號(hào)8位整數(shù),取值范圍為-128127ushortSystem.UInt16無符號(hào)16位整數(shù),取值范圍為065,535shortSystem.Int16有符號(hào)16 位整數(shù),取值范圍為-32,76832,767uintSystem.UInt32無 符 號(hào) 3 2 位 整 數(shù) , 取 值 范 圍 為 0 4,294,967,295intSystem.Int32有 符 號(hào) 3 2 位 整 數(shù) , 取 值 范 圍 為 -2,147,483,6482,147,483,647ulongSystem.UInt64無 符 號(hào) 6 4 位 整 數(shù) , 取 值 范

12、 圍 為 0 18,446,744,073,709,551,615longSystem.Int64有 符 號(hào) 6 4 位 整 數(shù) , 取 值 范 圍 為 -9,223,372,036,854,775,8089,223,372,036,854,775,807實(shí)數(shù)類型floatSystem.Single32位浮點(diǎn)數(shù)據(jù)類型,也稱為單精度數(shù)據(jù)類型,取值范圍為1.5 10453.4 1038doubleSystem.Double64位浮點(diǎn)數(shù)據(jù)類型,也稱為雙精度數(shù)據(jù)類型,取值范圍為5.0 103241.7 10308decimalSystem.Decimal128位數(shù)據(jù)類型,主要用于金融或貨幣方面的計(jì)算和

13、處理,取值范圍大致為1.0102 8 7.91028布爾類型boolSystem.Boolean布爾類型的變量只能存儲(chǔ)布爾值true(真)和false(假)字符類型charSystem.Char16位Unicode字符類型【例例3.1】pbytebyte數(shù)據(jù)類型的取值范圍是數(shù)據(jù)類型的取值范圍是02550255,下面程序?qū)Ⅱ?yàn)證變量越界的情況。,下面程序?qū)Ⅱ?yàn)證變量越界的情況。staticvoidMain(stringargs)bytea=255;Console.WriteLine(a);a+;Console.WriteLine(a);Console.ReadKey();p程序的運(yùn)行結(jié)果如下:程序的

14、運(yùn)行結(jié)果如下:2550轉(zhuǎn)義字符轉(zhuǎn)義字符轉(zhuǎn)義字符含義a警報(bào)(響鈴)b退格符tTAB符r回車符v垂直TAB符f換頁符n換行符eESC符反斜杠()2結(jié)構(gòu)類型結(jié)構(gòu)類型structEmployeepublicstringEmpName;/姓名姓名publicstringSex;/性別性別publicintWage;/工資工資publicstringIDCard;/身份證號(hào)身份證號(hào)使用結(jié)構(gòu)體使用結(jié)構(gòu)體p 可以通過下面的語句聲明一個(gè)可以通過下面的語句聲明一個(gè)EmployeeEmployee結(jié)構(gòu)類型的變量結(jié)構(gòu)類型的變量empemp。Employeeemp;p 可以通過可以通過“emp.emp. ”方式來訪問結(jié)

15、構(gòu)體內(nèi)的變量。方式來訪問結(jié)構(gòu)體內(nèi)的變量。例如,使用下面的語句可以為結(jié)構(gòu)類型變量例如,使用下面的語句可以為結(jié)構(gòu)類型變量empemp設(shè)置具體的值。設(shè)置具體的值。emp.EmpName=小強(qiáng)小強(qiáng);emp.Sex=男男;emp.Wage=3000;emp.IDCard=1101234567890 xx;【例例3.2】p在在EmployeeEmployee結(jié)構(gòu)類型中增加一個(gè)結(jié)構(gòu)類型中增加一個(gè)PhonePhone結(jié)構(gòu)類型,用于定義員工的電話信息。結(jié)構(gòu)類型,用于定義員工的電話信息。PhonePhone結(jié)構(gòu)類型包含結(jié)構(gòu)類型包含3 3個(gè)成員個(gè)成員變量,即住宅電話變量,即住宅電話HomePhoneHomePhon

16、e、辦公電話、辦公電話OfficePhoneOfficePhone和移動(dòng)電話和移動(dòng)電話MobilePhoneMobilePhone,定義代碼如下:,定義代碼如下:structEmployeepublicstringEmpName;/姓名姓名publicstringSex;/性別性別publicintWage;/工資工資publicstringIDCard;/身份證號(hào)身份證號(hào)publicstructPhonepublicstringHomePhone;/住宅電話住宅電話publicstringOfficePhone;/辦公電話辦公電話publicstringMobilePhone;/移動(dòng)電話移動(dòng)

17、電話publicPhonephone;/定義電話變量定義電話變量p可以使用下面的語句來設(shè)置可以使用下面的語句來設(shè)置empemp變量的住宅電話。變量的住宅電話。emp.phone.HomePhone=66668888;3枚舉類型枚舉類型p 枚舉類型就是能夠枚舉出所有取值的類型。例如,一枚舉類型就是能夠枚舉出所有取值的類型。例如,一周有周有7 7天,可以定義一個(gè)枚舉類型天,可以定義一個(gè)枚舉類型DaysDays,表示周,表示周1 1至周至周日,代碼如下:日,代碼如下:enumDaysSun,Mon,Tue,Wed,Thu,Fri,Sat使用枚舉類型使用枚舉類型p也可以手動(dòng)指定枚舉元素的值。例如,下面

18、的代碼中指定枚舉元素也可以手動(dòng)指定枚舉元素的值。例如,下面的代碼中指定枚舉元素SunSun的值為的值為1 1。enumDaysSun=1,Mon,Tue,Wed,Thu,Fri,Satp可以使用下面的方法來聲明枚舉類型的元素??梢允褂孟旅娴姆椒▉砺暶髅杜e類型的元素。Daysweekdayp可以使用可以使用“ . ”的方式來引用枚舉類型的元素。例的方式來引用枚舉類型的元素。例如,將變量如,將變量weekdayweekday賦值為周日,代碼如下:賦值為周日,代碼如下:weekday=Days.Sun; 3.2.2 引用類型引用類型p 引用類型與值類型的最大區(qū)別在于,引用類型變量不直接存儲(chǔ)所引用類型

19、與值類型的最大區(qū)別在于,引用類型變量不直接存儲(chǔ)所包含的值,而是指向它所要存儲(chǔ)的值。也就是說,引用類型變量包含的值,而是指向它所要存儲(chǔ)的值。也就是說,引用類型變量保存的是數(shù)據(jù)引用值的地址,這一點(diǎn)類似于保存的是數(shù)據(jù)引用值的地址,這一點(diǎn)類似于C C語言中的指針。語言中的指針。p C#C#語言中包含的引用類型包括類(語言中包含的引用類型包括類(classclass)、數(shù)組()、數(shù)組(arrayarray)、接)、接口(口(interfaceinterface)和委托()和委托(delegatedelegate)等。)等。1類類p 類是面向?qū)ο蟪绦蛟O(shè)計(jì)的基本單位,它既可以描述對(duì)象的屬性,類是面向?qū)ο蟪绦?/p>

20、設(shè)計(jì)的基本單位,它既可以描述對(duì)象的屬性,又可以定義對(duì)象的操作。又可以定義對(duì)象的操作。p 關(guān)于關(guān)于C#C#語言中定義和使用類的方法,將在語言中定義和使用類的方法,將在11.611.6小節(jié)詳細(xì)介紹。這小節(jié)詳細(xì)介紹。這里只介紹一個(gè)簡(jiǎn)單的定義類的實(shí)例。里只介紹一個(gè)簡(jiǎn)單的定義類的實(shí)例?!纠?.3】p聲明類聲明類EmployeeEmployee,用于定義員工的信息和操作,代碼如下:,用于定義員工的信息和操作,代碼如下:classEmployeepublicstringEmpName;/姓名姓名publicstringSex;/性別性別publicintWage;/工資工資publicstringIDCa

21、rd;/身份證號(hào)身份證號(hào)/輸出員工信息輸出員工信息/publicvoidPrintEmpInfo()Console.WriteLine(EmpName);Console.WriteLine(Sex);Console.WriteLine(Wage);Console.WriteLine(IDCard);2數(shù)組數(shù)組p 數(shù)組是包含若干相同數(shù)據(jù)類型變量的數(shù)據(jù)結(jié)構(gòu),它對(duì)應(yīng)一段連續(xù)的數(shù)組是包含若干相同數(shù)據(jù)類型變量的數(shù)據(jù)結(jié)構(gòu),它對(duì)應(yīng)一段連續(xù)的內(nèi)存空間。在定義數(shù)組時(shí),需要指定數(shù)組名、數(shù)組元素的數(shù)據(jù)類型內(nèi)存空間。在定義數(shù)組時(shí),需要指定數(shù)組名、數(shù)組元素的數(shù)據(jù)類型和數(shù)組的維數(shù)等信息。和數(shù)組的維數(shù)等信息。p 數(shù)組可以是

22、一維的,也可以是多維的。聲明一維數(shù)組的語法如下:數(shù)組可以是一維的,也可以是多維的。聲明一維數(shù)組的語法如下:=newp 關(guān)鍵字關(guān)鍵字newnew用于創(chuàng)建新的對(duì)象。例如,定義一個(gè)整型一維數(shù)組用于創(chuàng)建新的對(duì)象。例如,定義一個(gè)整型一維數(shù)組arrarr,它包含它包含5 5個(gè)數(shù)組元素,代碼如下:個(gè)數(shù)組元素,代碼如下:intarr=newint5;使用數(shù)組使用數(shù)組p在聲明數(shù)組對(duì)象時(shí),可以直接對(duì)其進(jìn)行初始化,例如:在聲明數(shù)組對(duì)象時(shí),可以直接對(duì)其進(jìn)行初始化,例如:intarr=newint51,2,3,4,5;p使用下面的語句可以設(shè)置和返回?cái)?shù)組元素的值。使用下面的語句可以設(shè)置和返回?cái)?shù)組元素的值。arr0=2;i

23、nta=arr2;p在在C#C#語言中可以聲明多維數(shù)組。例如,下面的語句聲明了一個(gè)語言中可以聲明多維數(shù)組。例如,下面的語句聲明了一個(gè)5 5行行2 2列的二維整型列的二維整型數(shù)組。數(shù)組。int,array=newint5,2;p多維數(shù)組的使用方法與一維數(shù)組類似,也可以在聲明數(shù)組時(shí)定義其初始值。例如多維數(shù)組的使用方法與一維數(shù)組類似,也可以在聲明數(shù)組時(shí)定義其初始值。例如:int,array=newint,1,2,2,2,3,3,4,2,5,3;3接口接口【例例11.411.4】在繪制圖形時(shí),都可以指定繪圖使用的顏色(在繪制圖形時(shí),都可以指定繪圖使用的顏色(ColorColor屬性),也需要包含屬性)

24、,也需要包含一個(gè)繪制動(dòng)作(一個(gè)繪制動(dòng)作(DrawDraw方法)。因此,可以定義一個(gè)接口方法)。因此,可以定義一個(gè)接口ISharpISharp,包含所有繪圖類,包含所有繪圖類所包含的所包含的ColorColor屬性和屬性和DrawDraw方法,代碼如下:方法,代碼如下:ppublicinterfaceISharppp/p/繪制圖形的顏色繪制圖形的顏色p/pSystem.Drawing.ColorColorget;set;p/p/繪制圖形繪制圖形p/pvoidDraw();pp4委托委托p 委托(委托(delegatedelegate)相當(dāng)于)相當(dāng)于C+C+中的函數(shù)指針,但是委托是類型安全中的函數(shù)

25、指針,但是委托是類型安全和可靠的,它避免了和可靠的,它避免了C+C+中由于沒有釋放指針而導(dǎo)致的資源泄露現(xiàn)中由于沒有釋放指針而導(dǎo)致的資源泄露現(xiàn)象,也不會(huì)因?yàn)橹羔樦赶虿徽_的地址而產(chǎn)生異常。象,也不會(huì)因?yàn)橹羔樦赶虿徽_的地址而產(chǎn)生異常。p 可以使用關(guān)鍵字可以使用關(guān)鍵字delegatedelegate來定義委托。例如,定義一個(gè)指向來定義委托。例如,定義一個(gè)指向voidvoid類型函數(shù)的委托,代碼如下:類型函數(shù)的委托,代碼如下:delegatevoidMyDelegate();p 委托本身沒有意義,在沒有指向具體的方法前也不能被獨(dú)立執(zhí)行委托本身沒有意義,在沒有指向具體的方法前也不能被獨(dú)立執(zhí)行。需要首先

26、定義一個(gè)方法,然后將委托指向該方法,才能通過委。需要首先定義一個(gè)方法,然后將委托指向該方法,才能通過委托調(diào)用方法。托調(diào)用方法?!纠?.5】classProgram/定義委托定義委托MyDelegatedelegatevoidMyDelegate();/主函數(shù)主函數(shù)staticvoidMain(stringargs)/將委托對(duì)象將委托對(duì)象d指向指向PrintHello()方法方法MyDelegated=newMyDelegate(PrintHello);/相當(dāng)于執(zhí)行相當(dāng)于執(zhí)行PrintHello()方法方法d();/將委托對(duì)象將委托對(duì)象d指向指向PrintABC()方法方法d=newMyDel

27、egate(PrintABC);/相當(dāng)于執(zhí)行者相當(dāng)于執(zhí)行者PrintABC()方法方法d();/等待用戶按任意鍵退出等待用戶按任意鍵退出Console.ReadKey();【例例3.5】/打印打印HelloWorld的方法的方法publicstaticvoidPrintHello()Console.WriteLine(HelloWorld);/打印打印ABC的方法的方法publicstaticvoidPrintABC()Console.WriteLine(ABC);5內(nèi)置引用類型內(nèi)置引用類型(1 1)objectobject類型類型(2 2)stringstring類型類型(1)object類

28、型類型p 可以將值類型賦給可以將值類型賦給objectobject類型的變量,此過程被稱為類型的變量,此過程被稱為“裝箱裝箱”。例如,下面的代碼將整型變量例如,下面的代碼將整型變量i i的值賦到的值賦到objectobject變量中。變量中。inti=10;objectobj=i;p 裝箱的反向操作為裝箱的反向操作為“取消裝箱取消裝箱”,即將,即將objectobject變量中的值賦到一變量中的值賦到一個(gè)值類型變量中。例如,下面的代碼將個(gè)值類型變量中。例如,下面的代碼將objectobject變量變量i i的值賦到的值賦到floatfloat變量中。變量中。intj=(int)obj;(2)s

29、tring類型類型p stringstring類型變量的聲明方式如下:類型變量的聲明方式如下:string=;例如例如,下面的語句中定義了一個(gè)下面的語句中定義了一個(gè)stringstring類型變量類型變量strstr,其,其初始值為初始值為hellohello。stringstr=hello;3.2.3 類型轉(zhuǎn)換類型轉(zhuǎn)換1 1隱式轉(zhuǎn)換隱式轉(zhuǎn)換隱式類型轉(zhuǎn)換是系統(tǒng)默認(rèn)的轉(zhuǎn)換方式,可以直接通過賦值的方式實(shí)現(xiàn)隱式類型轉(zhuǎn)換。隱式類型轉(zhuǎn)換是系統(tǒng)默認(rèn)的轉(zhuǎn)換方式,可以直接通過賦值的方式實(shí)現(xiàn)隱式類型轉(zhuǎn)換。例如:例如:inta=10;longb=a;在上面的代碼中,在上面的代碼中,intint類型變量類型變量a

30、a的初始值為的初始值為1010,將其賦值給,將其賦值給longlong類型變量類型變量b b,則,則b b的值的值也等于也等于1010。2 2顯式轉(zhuǎn)換顯式轉(zhuǎn)換顯式類型轉(zhuǎn)換也稱為強(qiáng)制類型轉(zhuǎn)換,它需要在進(jìn)行類型轉(zhuǎn)換時(shí)明確指定要轉(zhuǎn)換的類型顯式類型轉(zhuǎn)換也稱為強(qiáng)制類型轉(zhuǎn)換,它需要在進(jìn)行類型轉(zhuǎn)換時(shí)明確指定要轉(zhuǎn)換的類型。例如:。例如:inta=10;longb=(int)a;3.3 常量和變量常量和變量p常量常量p變量變量3.3.1 常量常量p 在在C#C#語言中,可以使用語言中,可以使用constconst關(guān)鍵字來聲明常量,語法如下:關(guān)鍵字來聲明常量,語法如下:const=;1 1publicpublic

31、訪問修飾符訪問修飾符2 2privateprivate訪問修飾符訪問修飾符3 3protectedprotected訪問修飾符訪問修飾符4 4internalinternal訪問修飾符訪問修飾符publicconstfloatPI=3.1415926;3.3.2 變量變量p 在在C#C#語言中,聲明聲明變量的語法如下:語言中,聲明聲明變量的語法如下:;p 在前面的內(nèi)容中已經(jīng)介紹了一些聲明變量的實(shí)例,例如聲明在前面的內(nèi)容中已經(jīng)介紹了一些聲明變量的實(shí)例,例如聲明intint類型的變類型的變量量i i,代碼如下:,代碼如下:inti;p 在聲明變量的同時(shí),可以設(shè)置變量的初始值。例如,聲明在聲明變量的

32、同時(shí),可以設(shè)置變量的初始值。例如,聲明intint類型變量類型變量a a,其初始值為其初始值為1010,代碼如下:,代碼如下:inta=10;C#變量的命名規(guī)則變量的命名規(guī)則p 變量名必須以字母或下劃線等特定符號(hào)開頭。變量名必須以字母或下劃線等特定符號(hào)開頭。p 變量名只能由字母、數(shù)字和下劃線組成,不能包含空格、標(biāo)點(diǎn)符號(hào)、運(yùn)變量名只能由字母、數(shù)字和下劃線組成,不能包含空格、標(biāo)點(diǎn)符號(hào)、運(yùn)算符等。算符等。p 變量名不能與變量名不能與C#C#的庫函數(shù)名相同。的庫函數(shù)名相同。p 變量名不能與變量名不能與C#C#的關(guān)鍵字相同。的關(guān)鍵字相同。例如,下面聲明的變量是合法的。例如,下面聲明的變量是合法的。int

33、a=10;int_a=1;stringstr;floatf;3.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式p 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式p 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式p 遞增遞減運(yùn)算符和遞增遞減表達(dá)式遞增遞減運(yùn)算符和遞增遞減表達(dá)式p 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式p 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式3.4.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式【例例3.6】p下面代碼演示算術(shù)表達(dá)式的計(jì)算方法。下面代碼演示算術(shù)表達(dá)式的計(jì)算方法。staticvoidMain(stringargs)inti=10,j=30,k=50;/優(yōu)先計(jì)算優(yōu)先計(jì)算j

34、*kintnum=i+j*k;Console.WriteLine(10+30*50=0,num);/優(yōu)先計(jì)算括號(hào)里面的內(nèi)容優(yōu)先計(jì)算括號(hào)里面的內(nèi)容num=(i+j)*k;Console.WriteLine(10+30)*50=0,num);/按任意鍵退出按任意鍵退出Console.ReadKey();p運(yùn)行結(jié)果如下:運(yùn)行結(jié)果如下:10+30*50=1510;(10+30)*50=2000;3.4.2 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式3.4.3 遞增遞減運(yùn)算符和遞增遞減運(yùn)算符和遞增遞減表達(dá)式遞增遞減表達(dá)式p 遞增運(yùn)算符為遞增運(yùn)算符為+,用于將操作數(shù)增加,用于將操作數(shù)增加1 1。遞增運(yùn)算

35、符可。遞增運(yùn)算符可以出現(xiàn)在操作數(shù)的前面,也可以出現(xiàn)在操作數(shù)的后面以出現(xiàn)在操作數(shù)的前面,也可以出現(xiàn)在操作數(shù)的后面。p 當(dāng)遞增運(yùn)算符出現(xiàn)在操作數(shù)前面時(shí),程序?qū)⑹紫葘⒉佼?dāng)遞增運(yùn)算符出現(xiàn)在操作數(shù)前面時(shí),程序?qū)⑹紫葘⒉僮鲾?shù)增加作數(shù)增加1 1,然后再將增加,然后再將增加1 1后的結(jié)果作為表達(dá)式的返后的結(jié)果作為表達(dá)式的返回值?;刂??!纠?.7】p下面代碼演示遞增運(yùn)算符出現(xiàn)在操作數(shù)前面時(shí)的情況。下面代碼演示遞增運(yùn)算符出現(xiàn)在操作數(shù)前面時(shí)的情況。inti=10;intj=+i;Console.WriteLine(i=+i.ToString();Console.WriteLine(j=+j.ToString();

36、p運(yùn)行結(jié)果如下:運(yùn)行結(jié)果如下:i=11;j=11;【例例3.8】p 下面代碼演示遞增運(yùn)算符出現(xiàn)在操作數(shù)后面時(shí)的情況下面代碼演示遞增運(yùn)算符出現(xiàn)在操作數(shù)后面時(shí)的情況。inti=10;intj=i+;Console.WriteLine(i=+i.ToString();Console.WriteLine(j=+j.ToString();p 運(yùn)行結(jié)果如下:運(yùn)行結(jié)果如下:i=11;j=10;3.4.4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式【例例3.9】p 面代碼演示關(guān)系表達(dá)式和邏輯表達(dá)式結(jié)合使用的計(jì)算結(jié)果。面代碼演示關(guān)系表達(dá)式和邏輯表達(dá)式結(jié)合使用的計(jì)算結(jié)果。inti=50;Console.Writ

37、eLine(i30&i60);Console.ReadKey();3.4.5 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式【例例3.10】p下面代碼演示了各種賦值表達(dá)式的計(jì)算方法。下面代碼演示了各種賦值表達(dá)式的計(jì)算方法。staticvoidMain(stringargs)inti=10,j=3;Console.WriteLine(i=10;j=3);/=運(yùn)算符運(yùn)算符intnum=i+j;Console.WriteLine(i+j=0,num);/+=運(yùn)算符運(yùn)算符num=i;num+=j;Console.WriteLine(i+j=0,num);【例例3.10】/-=運(yùn)算符運(yùn)算符num=i;nu

38、m-=j;Console.WriteLine(i-j=0,num);/*=運(yùn)算符運(yùn)算符num=i;num*=j;Console.WriteLine(i*j=0,num);/=運(yùn)算符運(yùn)算符num=i;num/=j;Console.WriteLine(i/j=0,num);/=運(yùn)算符運(yùn)算符num=i;num%=j;Console.WriteLine(i%j=0,num);Console.ReadKey();【例例3.10】p運(yùn)行結(jié)果如下:運(yùn)行結(jié)果如下:i=10;j=3i+j=13i+j=13i-j=7i*j=30i/j=3i%j=13.5 流程控制語句流程控制語句p 選擇控制語句選擇控制語句p 循

39、環(huán)控制語句循環(huán)控制語句p 跳轉(zhuǎn)控制語句跳轉(zhuǎn)控制語句p 異常處理語句異常處理語句3.5.1 選擇控制語句選擇控制語句(1 1)ifif語句語句(2 2)switchswitch語句語句(1)if語句語句pifif語句的語法如下:語句的語法如下:if()else【例例3.11】p 下面代碼演示了下面代碼演示了ifif語句的使用方法。語句的使用方法。staticvoidMain(stringargs)Console.WriteLine(請(qǐng)輸入你的姓名:請(qǐng)輸入你的姓名:);stringstr=Console.ReadLine();if(str.Length0)Console.WriteLine(您的姓

40、名是:您的姓名是:0,str);elseConsole.WriteLine(沒有輸入沒有輸入);Console.ReadKey();else if語句語句if()elseif()else【例例3.12】p下面代碼演示了使用下面代碼演示了使用ifif語句實(shí)現(xiàn)多分支控制的方法。語句實(shí)現(xiàn)多分支控制的方法。ppstaticvoidMain(stringargs)ppDateTimenow=DateTime.Now;pif(now.DayOfWeek=DayOfWeek.Monday)pConsole.WriteLine(星期一星期一);pelseif(now.DayOfWeek=DayOfWeek.T

41、uesday)pConsole.WriteLine(星期二星期二);pelseif(now.DayOfWeek=DayOfWeek.Wednesday)pConsole.WriteLine(星期三星期三);pelseif(now.DayOfWeek=DayOfWeek.Thursday)pConsole.WriteLine(星期四星期四);pelseif(now.DayOfWeek=DayOfWeek.Friday)pConsole.WriteLine(星期五星期五);pelseif(now.DayOfWeek=DayOfWeek.Saturday)pConsole.WriteLine(星期六

42、星期六);pelsepConsole.WriteLine(星期日星期日);p枚舉類型枚舉類型DayOfWeek的值的值(2)switch語句語句pswitchswitch語句是一個(gè)多分支控制語句,語法如下:語句是一個(gè)多分支控制語句,語法如下:switch()case:break;case:break;default:break;【例例3.13】p使用使用switchswitch語句輸出當(dāng)前日期是星期幾,代碼如下:語句輸出當(dāng)前日期是星期幾,代碼如下:staticvoidMain(stringargs)DateTimenow=DateTime.Now;switch(now.DayOfWeek)ca

43、seDayOfWeek.Monday:Console.WriteLine(星期一星期一);break;caseDayOfWeek.Tuesday:Console.WriteLine(星期二星期二);break;caseDayOfWeek.Wednesday:Console.WriteLine(星期三星期三);break;【例例3.13】caseDayOfWeek.Thursday:Console.WriteLine(星期四星期四);break;caseDayOfWeek.Friday:Console.WriteLine(星期五星期五);break;caseDayOfWeek.Saturday:

44、Console.WriteLine(星期六星期六);break;default:Console.WriteLine(星期日星期日);break;【例例3.14】p使用使用switchswitch語句判斷當(dāng)前日期是工作日還是周末,代碼如下:語句判斷當(dāng)前日期是工作日還是周末,代碼如下:staticvoidMain(stringargs)DateTimenow=DateTime.Now;switch(now.DayOfWeek)caseDayOfWeek.Monday:caseDayOfWeek.Tuesday:caseDayOfWeek.Wednesday:caseDayOfWeek.Thursd

45、ay:caseDayOfWeek.Friday:Console.WriteLine(工作日工作日);break;default:Console.WriteLine(周末周末);break;3.5.2 循環(huán)控制語句循環(huán)控制語句(1 1)dowhiledowhile語句語句(2 2)whilewhile語句語句(3 3)forfor語句語句(4 4)foreachforeach語句語句(1)dowhile語句語句p dowhiledowhile語句的語法如下:語句的語法如下:dowhile()【例例3.15】p使用使用dowhiledowhile語句計(jì)算語句計(jì)算1+2+3+91+2+3+9的結(jié)果,

46、代碼如下:的結(jié)果,代碼如下:staticvoidMain(stringargs)inti=1;intsum=0;dosum+=i+;while(i11);Console.WriteLine(sum.ToString();Console.ReadKey();p運(yùn)行結(jié)果為運(yùn)行結(jié)果為5555。(2)while語句語句pwhilewhile語句的語法如下:語句的語法如下:while()【例例3.16】p使用使用while語句計(jì)算語句計(jì)算1+2+3+9的結(jié)果,代碼如下:的結(jié)果,代碼如下:staticvoidMain(stringargs)intn=1;intsum=0;while(true)sum+=n

47、+;if(n10)break;Console.WriteLine(sum.ToString();Console.ReadKey();(3)for語句語句pforfor語句的語法如下:語句的語法如下:for(;)p在在forfor語句中,需要定義一個(gè)循環(huán)控制變量,用來控制循環(huán)語句的執(zhí)行。例如:語句中,需要定義一個(gè)循環(huán)控制變量,用來控制循環(huán)語句的執(zhí)行。例如:for(inti=0;i10;i+)Console.WriteLine(i.ToString();【例例3.17】p 使用使用forfor語句輸出數(shù)組語句輸出數(shù)組arrarr所有元素的值,代碼如下:所有元素的值,代碼如下:staticvoidM

48、ain(stringargs)intarr=newint51,2,3,4,5;for(inti=0;iarr.Length;i+)Console.WriteLine(arr0=1,i,arri);Console.ReadKey();【例例3.17】p輸出結(jié)果如下:輸出結(jié)果如下:arr0=1arr1=2arr2=3arr3=4arr4=5(4)foreach語句語句p foreachforeach語句可以在循環(huán)語句塊中依次處理數(shù)組或?qū)ο笳Z句可以在循環(huán)語句塊中依次處理數(shù)組或?qū)ο蠹现械拿總€(gè)元素,語法如下:集合中的每個(gè)元素,語法如下:for(in)【例例3.18】p 使用使用foreachforea

49、ch語句輸出數(shù)組語句輸出數(shù)組arrarr所有元素的值,代碼如下:所有元素的值,代碼如下:staticvoidMain(stringargs)intarr=newint51,2,3,4,5;foreach(intelementinarr)Console.WriteLine(element);Console.ReadKey();【例例3.18】p輸出結(jié)果如下:輸出結(jié)果如下:123453.5.3 跳轉(zhuǎn)控制語句跳轉(zhuǎn)控制語句(1 1)breakbreak語句語句(2 2)continuecontinue語句語句(1)break語句語句pbreakbreak語句用于退出當(dāng)前的循環(huán)體或語句用于退出當(dāng)前的循環(huán)

50、體或switchswitch語句。在介紹語句。在介紹switchswitch語句時(shí)已經(jīng)語句時(shí)已經(jīng)演示了演示了breakbreak語句的使用,下面介紹在循語句的使用,下面介紹在循環(huán)控制語句中使用環(huán)控制語句中使用breakbreak語句的方法。語句的方法?!纠?.19】p在數(shù)組在數(shù)組arrarr中查找等于中查找等于1010的元素,找到后退出循環(huán),并輸出該元素在數(shù)組中的序號(hào),代碼如下的元素,找到后退出循環(huán),并輸出該元素在數(shù)組中的序號(hào),代碼如下:staticvoidMain(stringargs)intarr=newint51,21,10,43,25;intindex=-1;for(inti=0;i

51、=0)Console.WriteLine(等于等于10的數(shù)組索引為的數(shù)組索引為0,index);elseConsole.WriteLine(沒有找到等于沒有找到等于10的數(shù)組元素。的數(shù)組元素。);Console.ReadKey();(2)continue語句語句pcontinuecontinue語句用于將程序的控制權(quán)轉(zhuǎn)向語句用于將程序的控制權(quán)轉(zhuǎn)向循環(huán)語句的下一次循環(huán)操作。循環(huán)語句的下一次循環(huán)操作。【例例11.20】p 遍歷數(shù)組遍歷數(shù)組arrarr中的元素,輸出其中的偶數(shù),代碼如下:中的元素,輸出其中的偶數(shù),代碼如下:staticvoidMain(stringargs)intarr=newint

52、51,21,10,44,25;intindex=-1;for(inti=0;iarr.Length;i+)if(arri%2=1)continue;Console.WriteLine(arri);Console.ReadKey();3.5.4 異常處理語句異常處理語句p C#C#的異常處理語句的異常處理語句trycatchtrycatch,語法如下:,語法如下:trycatch()【例例3.21】p 下面的實(shí)例演示當(dāng)發(fā)生除下面的實(shí)例演示當(dāng)發(fā)生除0 0錯(cuò)誤時(shí)不進(jìn)行異常處理的情況。錯(cuò)誤時(shí)不進(jìn)行異常處理的情況。staticvoidMain(stringargs)inti=10;intresult=3

53、0/(i-10);Console.WriteLine(result);未處理異常未處理異常【例例3.22】p下面的實(shí)例演示當(dāng)發(fā)生除下面的實(shí)例演示當(dāng)發(fā)生除0 0錯(cuò)誤時(shí)進(jìn)行異常處理的情況。錯(cuò)誤時(shí)進(jìn)行異常處理的情況。staticvoidMain(stringargs)tryinti=10;intresult=30/(i-10);Console.WriteLine(result);catch(Exceptionex)Console.WriteLine(ex.Message);Console.ReadKey();【例例3.23】p下面的實(shí)例演示下面的實(shí)例演示trycatchfinallytrycatch

54、finally語句的使用情況。語句的使用情況。staticvoidMain(stringargs)inti=0;tryi=10;intresult=30/(i-10);Console.WriteLine(result);catch(Exceptionex)Console.WriteLine(ex.Message);finallyi=0;Console.Write(i);Console.ReadKey();3.6 類和對(duì)象類和對(duì)象p面向?qū)ο蟪绦蛟O(shè)計(jì)思想面向?qū)ο蟪绦蛟O(shè)計(jì)思想p創(chuàng)建類創(chuàng)建類p構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)p方法方法3.6.1 面向?qū)ο蟪绦蛟O(shè)計(jì)思想面向?qū)ο蟪绦蛟O(shè)計(jì)思想面向?qū)ο蟪绦?/p>

55、設(shè)計(jì)具有如下特性面向?qū)ο蟪绦蛟O(shè)計(jì)具有如下特性p對(duì)象唯一性對(duì)象唯一性p抽象性抽象性p繼承性繼承性p多態(tài)性多態(tài)性3.6.2 創(chuàng)建類創(chuàng)建類p 在在Visual StudioVisual Studio的菜單中依次選擇的菜單中依次選擇“項(xiàng)目項(xiàng)目”/ /“添加類添加類”,打開,打開“添加新項(xiàng)添加新項(xiàng)”對(duì)話框。對(duì)話框。使用使用class關(guān)鍵字可以定義一個(gè)類關(guān)鍵字可以定義一個(gè)類class員工類員工類Employee的實(shí)例的實(shí)例publicclassEmployeepublicstringEmpName;/姓名姓名publicstringSex;/性別性別publicintWage;/工資工資publicstr

56、ingIDCard;/身份證號(hào)身份證號(hào)/輸出員工信息輸出員工信息/publicvoidPrintEmpInfo()Console.WriteLine(EmpName);Console.WriteLine(Sex);Console.WriteLine(Wage);Console.WriteLine(IDCard);【例例3.24】p 下面的實(shí)例演示了如何訪問對(duì)象屬性和和方法。下面的實(shí)例演示了如何訪問對(duì)象屬性和和方法。staticvoidMain(stringargs)Employeeobj=newEmployee();obj.EmpName=小明小明;obj.Sex=男男;obj.Wage=25

57、00;obj.IDCard=1234567890abcd;obj.PrintEmpInfo();Console.ReadKey();【例例3.25】p修改類修改類EmployeeEmployee的定義,將字段設(shè)置為的定義,將字段設(shè)置為privateprivate類型,并使用公共屬性來獲取和設(shè)類型,并使用公共屬性來獲取和設(shè)置字段的值,代碼如下:置字段的值,代碼如下:classEmployeeprivatestringempName;/姓名姓名privatestringsex;/性別性別privateintwage;/工資工資privatestringidCard;/身份證號(hào)身份證號(hào)/empNam

58、e字段對(duì)應(yīng)的屬性字段對(duì)應(yīng)的屬性/publicstringEmpNamegetreturnempName;setempName=value;【例例3.25】/sex字段對(duì)應(yīng)的屬性字段對(duì)應(yīng)的屬性/publicstringSexgetreturnsex;setsex=value;【例例3.25】/wage字段對(duì)應(yīng)的屬性字段對(duì)應(yīng)的屬性/publicintWagegetif(wage0)returnwage;elsereturn0;setif(value0)wage=value;elsewage=0;【例例3.25】/idCard字段對(duì)應(yīng)的屬性字段對(duì)應(yīng)的屬性/publicstringIDCardgetr

59、eturnidCard;setidCard=value;/訪問私有字段,輸出員工信息訪問私有字段,輸出員工信息/publicvoidPrintEmpInfo()Console.WriteLine(empName);Console.WriteLine(sex);Console.WriteLine(wage);Console.WriteLine(idCard);3.6.3 構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)和析構(gòu)函數(shù)1 1構(gòu)造函數(shù)構(gòu)造函數(shù)p 構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)自動(dòng)執(zhí)行,用于初始對(duì)象的初始化。每個(gè)構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)自動(dòng)執(zhí)行,用于初始對(duì)象的初始化。每個(gè)類都有構(gòu)造函數(shù),它的函數(shù)名與類名相同。類都有構(gòu)造函數(shù),它的函數(shù)名與類名相同。p 例如,在類例如,在類EmployeeEmployee中定義構(gòu)造函數(shù),代碼如下:中定義構(gòu)造函數(shù),代碼如下:publicEmployee()empName=;sex=;wage=0;idCard=;構(gòu)造函數(shù)構(gòu)造函數(shù)p在構(gòu)造函數(shù)中還可以使用參數(shù)。通常使用參數(shù)設(shè)置字段的初始值,代碼如下:在構(gòu)造函數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論