C#數(shù)據(jù)庫(kù)編程技術(shù)課件完整版電子教案_第1頁(yè)
C#數(shù)據(jù)庫(kù)編程技術(shù)課件完整版電子教案_第2頁(yè)
C#數(shù)據(jù)庫(kù)編程技術(shù)課件完整版電子教案_第3頁(yè)
C#數(shù)據(jù)庫(kù)編程技術(shù)課件完整版電子教案_第4頁(yè)
C#數(shù)據(jù)庫(kù)編程技術(shù)課件完整版電子教案_第5頁(yè)
已閱讀5頁(yè),還剩537頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 第1章 C#概述第1章 C#概述1.1 Microsoft.NET平臺(tái)概述1.2 C#語(yǔ)言簡(jiǎn)介1.3 Visual Studio集成開發(fā)環(huán)境1.4 C#程序結(jié)構(gòu)介紹1.5 簡(jiǎn)單的程序調(diào)試過(guò)程第1章 C#概述 1.1 Microsoft.NET平臺(tái)概述1.1 Microsoft.NET平臺(tái)概述Microsoft.NET平臺(tái)是由微軟公司開發(fā)的軟件開發(fā)系統(tǒng)平臺(tái),包括各種優(yōu)秀的編程語(yǔ)言和其他技術(shù),是一種主要用于Windows操作系統(tǒng)的托管代碼編程模型。在.NET平臺(tái)中,提供了大量的公共類庫(kù),包括了Visual C#、Visual C+.NET、Visual J#、Visual Basic.NET等技

2、術(shù),配合微軟公司推出的 Visual Studio系列產(chǎn)品,深受廣大開發(fā)人員的青睞,是當(dāng)前程序開發(fā)人員的首選技術(shù)之一。 1.1 Microsoft.NET平臺(tái)概述Microsoft.NET框架是微軟公司在21世紀(jì)初開發(fā)的致力于敏捷而快速的軟件開發(fā)框架,其更加注重平臺(tái)無(wú)關(guān)化和網(wǎng)絡(luò)透明化。Microsoft.NET框架既是一個(gè)靈活、穩(wěn)定的能運(yùn)行服務(wù)器端程序、富互聯(lián)網(wǎng)應(yīng)用、移動(dòng)終端程序和Windows桌面程序的軟件解析工具,又是軟件開發(fā)的基礎(chǔ)資源包。其具有以下特點(diǎn):具備統(tǒng)一應(yīng)用層接口?;诿嫦?qū)ο蟮拈_發(fā)。能夠支持多種開發(fā)語(yǔ)言。 1.1 Microsoft.NET平臺(tái)概述Microsoft.NET框架

3、與Windows操作系統(tǒng)和Microsoft Visual Studio集成開發(fā)環(huán)境緊密聯(lián)系,其基本工作原理如圖1-1所示: 圖1-1 .NET平臺(tái)的基本原理第1章 C#概述 1.2 C#語(yǔ)言簡(jiǎn)介1.2 C#語(yǔ)言簡(jiǎn)介 C#編程語(yǔ)言是微軟公司推出的基于.NET框架的、面向?qū)ο蟮母呒?jí)編程語(yǔ)言。C#由C、C+、Java語(yǔ)言派生而來(lái),繼承了這三種語(yǔ)言的絕大多數(shù)語(yǔ)法和特點(diǎn),是.NET框架中最常用的編程語(yǔ)言。C#語(yǔ)言的語(yǔ)法相對(duì)C和C+ 簡(jiǎn)單一些,因此使用C#開發(fā)應(yīng)用程序效率更高,成本更低。 1.2 C#語(yǔ)言簡(jiǎn)介 C#編程語(yǔ)言是微軟公司推出的基于.NET框架的、面向?qū)ο蟮母呒?jí)編程語(yǔ)言。C#由C、C+、Jav

4、a語(yǔ)言派生而來(lái),繼承了這三種語(yǔ)言的絕大多數(shù)語(yǔ)法和特點(diǎn),是.NET框架中最常用的編程語(yǔ)言。C#語(yǔ)言的語(yǔ)法相對(duì)C和C+ 簡(jiǎn)單一些,因此使用C#開發(fā)應(yīng)用程序效率更高,成本更低。 1.2 C#語(yǔ)言簡(jiǎn)介 C#依附于.NET Framework架構(gòu),它高效的運(yùn)行效率、簡(jiǎn)單易于理解的語(yǔ)法,加之強(qiáng)大的編譯器支持,使得程序的開發(fā)變得異常迅速。它的技術(shù)體系主要有以下幾個(gè)方面:徹底的面向?qū)ο笤O(shè)計(jì)Windows Form技術(shù)WPF技術(shù)WebForm技術(shù)MVC技術(shù) 1.2 C#語(yǔ)言簡(jiǎn)介 C#語(yǔ)言相比C、C+和Java等編程語(yǔ)言,具有以下特點(diǎn):指針限制。垃圾回收機(jī)制。支持泛型。單繼承機(jī)制。C#更加強(qiáng)調(diào)類型安全。 1.2

5、C#語(yǔ)言簡(jiǎn)介 在.NET平臺(tái)中,預(yù)先為C#語(yǔ)言編寫了大量的基礎(chǔ)類庫(kù)供開發(fā)者使用,具體包含以下類庫(kù):數(shù)據(jù)訪問(wèn)類。窗體類。安全類。XML類。線程類。輸入輸出類。Web類。 第1章 C#概述 1.3 Visual Studio集成開發(fā)環(huán)境1.3 Visual Studio集成開發(fā)環(huán)境1.3.1 開發(fā)環(huán)境簡(jiǎn)介1.3.2 創(chuàng)建Windows應(yīng)用程序1.3.3 生成應(yīng)用程序文件簡(jiǎn)介1.3.1 開發(fā)環(huán)境簡(jiǎn)介 在使用語(yǔ)言開發(fā)軟件的過(guò)程中,需要完成代碼的編寫、編譯和調(diào)試等工作。Microsoft Visual Studio是微軟公司開發(fā)的一款強(qiáng)大的.NET Framework平臺(tái)集成開發(fā)工具,也是開發(fā)Windo

6、ws應(yīng)用程序最主流的開發(fā)工具,其自身包括代碼編輯器、編譯器/解釋器、調(diào)試工具、安裝包建立工具等各種工具,適合開發(fā)各種Windows程序。本書中使用了Visual Studio 2012版(后簡(jiǎn)稱為VS2012),需安裝在Windows7(32位或64位)及以上系統(tǒng)。本書所有的例題都可以使用VS2012或以上版本打開運(yùn)行。1.3.2 創(chuàng)建Windows應(yīng)用程序 Windows應(yīng)用程序是一個(gè)比較開放的概念,是指可以在Windows平臺(tái)上運(yùn)行的所有程序,包括控制臺(tái)應(yīng)用程序、Windows窗體應(yīng)用程序、WPF應(yīng)用程序等。我們主要介紹如何使用VS2012創(chuàng)建控制臺(tái)應(yīng)用程序和Windows窗體應(yīng)用程序。主

7、要內(nèi)容創(chuàng)建控制臺(tái)應(yīng)用程序所謂控制臺(tái)應(yīng)用程序,指在命令提示符窗口而非圖形用戶界面中運(yùn)行的程序。其創(chuàng)建步驟如下:(1)啟動(dòng)Visual Studio2012,從“文件”菜單中選擇“新建”-“項(xiàng)目”,選擇Visual C#編程語(yǔ)言,選擇“控制臺(tái)應(yīng)用程序”。(2)勾選“為解決方案創(chuàng)建項(xiàng)目”復(fù)選框,點(diǎn)擊“確定”按鈕,Visual Studio就會(huì)使用“控制臺(tái)應(yīng)用程序”模板創(chuàng)建項(xiàng)目,并顯示了項(xiàng)目的初始代碼。(3)編寫程序代碼。 17主要內(nèi)容開始第一個(gè)C#程序18項(xiàng)目Demo_1_1主要內(nèi)容“解決方案資源管理器”中所列出的文件a. 解決方案“Demo_1”利用“解決方案”對(duì)項(xiàng)目文件進(jìn)行組織。每個(gè)應(yīng)用程序都有

8、一個(gè)解決方案,在解決方案中,可以包含一個(gè)或多個(gè)項(xiàng)目。解決方案文件后綴名為“.sln”。b. Demo_1_1C#項(xiàng)目文件。每個(gè)項(xiàng)目文件都可包含一個(gè)或多個(gè)項(xiàng)目源代碼以及其他項(xiàng)目相關(guān)文件(如圖片等)。項(xiàng)目文件后綴名為“.csproj”。19主要內(nèi)容“解決方案資源管理器”中所列出的文件c. Properties是項(xiàng)目中的一個(gè)文件夾,展開后可看到“AssemblyInfo.cs”文件,是一個(gè)特殊文件。d. 引用“引用”文件夾中包含了對(duì)已編譯好的代碼庫(kù)的引用。展開“引用”文件夾時(shí),可看到Visual Studio在項(xiàng)目中添加的一組默認(rèn)程序集引用,利用默認(rèn)程序集可訪問(wèn).NET框架的諸多功能。20主要內(nèi)容“

9、解決方案資源管理器”中所列出的文件e. App.config是應(yīng)用程序配置文件,可在其中進(jìn)行修改設(shè)置,以改變應(yīng)用程序運(yùn)行時(shí)的行為等。f. Program.cs是C#源代碼文件,也是本書重點(diǎn)使用和學(xué)習(xí)的部分。Progrom.cs文件定義了Program類,其中包含Main方法。C#源程序文件都是使用“.cs”為文件擴(kuò)展名。21主要內(nèi)容開始第一個(gè)C#程序22項(xiàng)目Demo_1_1輸出一行語(yǔ)句“this is the first C# program”Console類Console是由應(yīng)用程序引用的程序集提供的一個(gè)類,Console類提供了在控制臺(tái)窗口中顯示信息和從鍵盤讀取信息的方法。WriteLin

10、e是輸出信息的重載方法名。 例如:Console.WriteLine(this is the first C# program);ReadLine是從鍵盤獲取信息的重載方法名。 例如:string s = Console.ReadLine();23主要內(nèi)容創(chuàng)建Windows窗體應(yīng)用程序Windows窗體是程序與用戶交互的可視界面,比如彈出的消息對(duì)話框、記事本文件等都是Windows窗體應(yīng)用程序。(1)和創(chuàng)建控制臺(tái)應(yīng)用程序操作類似,在創(chuàng)建窗體應(yīng)用程序項(xiàng)目時(shí),選擇項(xiàng)目類型為“Windows窗體應(yīng)用程序”。(2)點(diǎn)擊確定后,可看到創(chuàng)建成功的Windows窗體應(yīng)用程序,除了可以看到代碼部分,還可以切換

11、看到窗體界面的設(shè)計(jì)效果。(3)編寫程序代碼。24主要內(nèi)容開始第一個(gè)Windows窗體程序25項(xiàng)目Demo_1_21.3.3 生成應(yīng)用程序文件簡(jiǎn)介 在編寫好源碼之后,需要編譯代碼并生成可運(yùn)行的程序文件,具體步驟如下:點(diǎn)擊“生成”菜單中的“生成解決方案”,此時(shí),程序會(huì)自動(dòng)保存。點(diǎn)擊“調(diào)試”菜單中“啟動(dòng)調(diào)試”(快捷鍵F5),若程序正確,則會(huì)打開命令窗口,程序開始運(yùn)行。也可以點(diǎn)擊“調(diào)試”菜單中“開始執(zhí)行(不調(diào)試)”(快捷鍵Ctrl+F5),程序也可以運(yùn)行。在同一個(gè)解決方案下,可運(yùn)行不同的項(xiàng)目。 C#程序結(jié)構(gòu)介紹第1章 C#概述271.4 C#程序結(jié)構(gòu)介紹281命名空間2Main方法3輸入和輸出4程序注

12、釋 1. 命名空間命名空間類似于類的容器,即使類的名稱相同,在不同的命名空間下,也不會(huì)發(fā)生沖突。命名空間和類的關(guān)系,非常類似于操作系統(tǒng)中目錄與文件的關(guān)系:為了解決命名沖突和便于管理,將文件放于不同的目錄,一個(gè)目錄是一組文件的集合,并且一個(gè)目錄可以嵌套包含其他的目錄。使用namespace命令定義一個(gè)命名空間。通過(guò)把類放在namespace里面,這個(gè)類名就自動(dòng)具有了一個(gè)與命名空間名字相同的前綴,這個(gè)類的完整類名就變成了namespace.classname的形式。291. 命名空間在項(xiàng)目Demo_1_1中,可看到如下代碼:namespace Demo_1_1 /定義命名空間為Demo_1_1cl

13、ass Program /完整類名是Demo_1_1.Program 在項(xiàng)目Demo_1_2 中,有以下代碼:namespace Demo_1_2 /定義命名空間為Demo_1_2static class Program /完整類名是Demo_1_2.Program301. 命名空間使用using命令,用于限定要使用的命名空間。如項(xiàng)目頂部的代碼部分:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;使用using命令后,同一

14、個(gè)文件后續(xù)代碼可以不再指定命名空間限定對(duì)象。由于上述五行命名空間在項(xiàng)目開發(fā)過(guò)程中頻繁使用,所以新建項(xiàng)目時(shí),Visual Studio會(huì)自動(dòng)添加這些using命令。在開發(fā)過(guò)程中,可根據(jù)實(shí)際需要,增減代碼頂部的using命令。312Main方法Main方法是C#程序的入口點(diǎn),C#程序運(yùn)行時(shí),不管是控制臺(tái)應(yīng)用程序還是Windows窗體應(yīng)用程序,都從Main方法開始執(zhí)行。Main方法必須被聲明為靜態(tài)的。根據(jù)返回類型和入口參數(shù)的不同,Main方法可以有以下幾種形式:static void Main()static void Main(string args)static int Main()static

15、 int Main(string args)322Main方法新建一個(gè)控制臺(tái)應(yīng)用程序,項(xiàng)目名稱為ArgumentTest,項(xiàng)目位置為C:。完成Main方法如下所示。static void Main(string args) Console.WriteLine(Hello + args0); Console.Read();將參數(shù)傳遞給Main方法有兩種方式:(1)在運(yùn)行程序時(shí)傳遞參數(shù)。(2)在開發(fā)環(huán)境中傳遞參數(shù)。333輸入和輸出Console類位于命名空間System,它為控制臺(tái)程序提供了最基本的輸入、輸出方法,通常用Console類的WriteLine、Write方法輸出,用ReadLine、

16、Read方法輸入。(1)WriteLine和Write(2)格式化輸出(3)ReadLine和Read34(1)WriteLine和WriteWriteLine和Write方法均用于在標(biāo)準(zhǔn)輸出設(shè)備(一般是屏幕)上輸出文本(即字符串),兩者的區(qū)別在于WriteLine輸出后自動(dòng)加一個(gè)回車換行,而Write不自動(dòng)換行。int a=5;string s=”hello world”;Console.WriteLine(a); Console.WriteLine(s);Console.WriteLine(s+a); 5353輸入和輸出5hello worldhello world5(2)格式化輸出Wri

17、teLine和Write方法還可以輸出格式化信息,格式如下:Console.WriteLine(格式化字符串,輸出對(duì)象1,輸出對(duì)象2,);Console.Write(格式化字符串,輸出對(duì)象1,輸出對(duì)象2,);其中,格式化字符串的常用格式為:“0.1.”,0與輸出對(duì)象1的內(nèi)容相對(duì)應(yīng),1與輸出對(duì)象2的內(nèi)容相對(duì)應(yīng),其他內(nèi)容按原樣輸出。int a=5;string s=”hello world”;Console.WriteLine(”a=0,s=1”,a,s);5363輸入和輸出a=5, s=hello world(3)ReadLine和ReadReadLine方法用于從標(biāo)準(zhǔn)輸入設(shè)備(通常是鍵盤)輸入

18、一行字符(以回車表示結(jié)束),返回的結(jié)果是string(字符串)類型數(shù)據(jù),如下所示: string s=Console.ReadLine();【說(shuō)明】Console.ReadLine()的返回結(jié)果只能是字符串,如果需要數(shù)值,則可以將字符串s通過(guò)Convert類的方法轉(zhuǎn)換為相應(yīng)的數(shù)值。5373輸入和輸出(3)ReadLine和ReadRead方法也是從標(biāo)準(zhǔn)輸入設(shè)備(通常是鍵盤)輸入字符,不過(guò)它只接收一個(gè)字符,并且返回的結(jié)果是一個(gè)int型數(shù)值,即該字符的ASCII碼。例如: int n=Console.Read();【說(shuō)明】Console.Read()的返回結(jié)果只能是int型,如果需要其他類型,需要

19、使用Convert類的方法轉(zhuǎn)換為相應(yīng)的類型。5383輸入和輸出(3)ReadLine和Readint n=Console.Read();char c=Convert.ToChar(n);上面的代碼中,先將輸入的字符的ASCII碼賦給int型的變量n,再通過(guò)Convert.ToChar進(jìn)行轉(zhuǎn)換,最終將輸入的字符賦給char(字符)型變量c。5393輸入和輸出程序中加入注釋是為了程序更加清晰可讀。注釋是給開發(fā)、調(diào)試和維護(hù)程序的人看的,而不是用來(lái)執(zhí)行以達(dá)到某個(gè)效果的,注釋不會(huì)被編譯,更不會(huì)產(chǎn)生可執(zhí)行代碼。注釋分為以下幾種:/單行注釋/*/多行注釋/ XML注釋5404程序注釋 1.5 簡(jiǎn)單的程序調(diào)試

20、過(guò)程第1章 C#概述411.5 簡(jiǎn)單的程序調(diào)試過(guò)程在開發(fā)應(yīng)用程序的過(guò)程中,尤其當(dāng)程序出現(xiàn)錯(cuò)誤或者未得到預(yù)期的結(jié)果時(shí),經(jīng)常需要進(jìn)行調(diào)試,以便找出問(wèn)題所在。作為一個(gè)優(yōu)秀的集成開發(fā)環(huán)境,VS2012在調(diào)試方面的功能也非常強(qiáng)大,VS2012的調(diào)試器可以以高度可視化的方式顯示調(diào)試中的程序信息,還可以設(shè)置條件斷點(diǎn)。421.5 簡(jiǎn)單的程序調(diào)試過(guò)程新建一個(gè)控制臺(tái)應(yīng)用程序,其中Main方法如下:static void Main(string args)int a;a = 1; Console.WriteLine(a);a = 2; /斷點(diǎn)處 Console.WriteLine(a);a = 3; Console

21、.WriteLine(a);431.5 簡(jiǎn)單的程序調(diào)試過(guò)程44圖1-15 添加斷點(diǎn)圖1-16 程序執(zhí)行到斷點(diǎn)處暫停1.5 簡(jiǎn)單的程序調(diào)試過(guò)程斷點(diǎn)的作用是程序執(zhí)行到斷點(diǎn)處時(shí)暫停,按下F5,程序在斷點(diǎn)處暫停。黃色箭頭和黃色背景代表將要執(zhí)行的下一條語(yǔ)句,由于a = 2;語(yǔ)句還沒有被執(zhí)行,所以局部變量窗口處a的值仍然為1。如果想單步執(zhí)行,需按下F11或者既可以單步執(zhí)行直到程序運(yùn)行結(jié)束,也可以按下 直接停止調(diào)試。45第1章 C#概述 謝謝! 第2章 C#語(yǔ)法基礎(chǔ)第2章 C#語(yǔ)法基礎(chǔ)2.1 數(shù)據(jù)類型2.2 變量和常量2.3 語(yǔ)句2.4 隨機(jī)數(shù)2.5 應(yīng)用實(shí)例:斗地主發(fā)牌模擬第2章 C#語(yǔ)法基礎(chǔ) 2.1 數(shù)

22、據(jù)類型2.1 數(shù)據(jù)類型數(shù)據(jù)是程序處理的基本對(duì)象,編寫程序的本質(zhì)是對(duì)數(shù)據(jù)進(jìn)行處理并獲取結(jié)果。數(shù)據(jù)都是以某種特定的形式存在的,如整數(shù)、字符串等。在C#中,根據(jù)數(shù)據(jù)的內(nèi)容和存儲(chǔ)方式,可以把數(shù)據(jù)分為兩大類值類型引用類型 2.1 數(shù)據(jù)類型2.1.1 值類型2.1.2 引用類型2.1.3 類型轉(zhuǎn)換2.1.1 值類型 值類型用來(lái)表示實(shí)際存在的數(shù)值,如數(shù)學(xué)中的整數(shù)和小數(shù)在C#中對(duì)應(yīng)表示為整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)。在C#中,包含以下值類型數(shù)據(jù)。1. 整型2. 浮點(diǎn)型(又稱實(shí)型)3. 字符型4. 布爾類型5. 結(jié)構(gòu)類型6. 枚舉類型 1 浮點(diǎn)型 整型指不包含小數(shù)部分的數(shù)字,包含正整型、負(fù)整型和0共三類數(shù)字。C#中將整

23、型數(shù)據(jù)分為8類,如表所示。 數(shù)據(jù)類型類型標(biāo)識(shí)符字節(jié)數(shù)數(shù)值范圍字節(jié)sbyte1-128127之間的整數(shù)無(wú)符號(hào)字節(jié)byte10255之間的整數(shù)短整型short2-3276832767之間的整數(shù)無(wú)符號(hào)短整型ushort2065535之間的整數(shù)整型int4-21474836482147483647之間的整數(shù)無(wú)符號(hào)整型uint404294967295之間的整數(shù)長(zhǎng)整型long8-92233720368547758089223372036854775807之間的整數(shù)無(wú)符號(hào)長(zhǎng)整型ulong8018446744073709551615之間的整數(shù)2 浮點(diǎn)型(又稱實(shí)型) 浮點(diǎn)數(shù)float(單精度),在浮點(diǎn)數(shù)后添加一

24、個(gè)小寫f或者大寫F作為后綴。double(雙精度),不需要添加后綴。十進(jìn)制小數(shù)decimal,在數(shù)字后面應(yīng)添加小寫m或者大寫M作為后綴。 數(shù)據(jù)類型類型標(biāo)識(shí)符字節(jié)數(shù)數(shù)值范圍單精度實(shí)數(shù)float4雙精度實(shí)數(shù)double8十進(jìn)制實(shí)數(shù)decimal163 字符型 字符型數(shù)據(jù)用來(lái)處理ASCII字符和Unicode編碼字符,可存儲(chǔ)065535之間的整數(shù)。字符型數(shù)據(jù)類型標(biāo)識(shí)符為char。在處理一些特殊字符時(shí),如處理單引號(hào)自己“”,需要在字符前添加轉(zhuǎn)義字符單斜杠“”進(jìn)行處理。 轉(zhuǎn)義符作用轉(zhuǎn)義符作用 單引號(hào) 雙引號(hào) 斜杠0空字符a警報(bào)bBackSpace回退f 換頁(yè)符n 換行符r 回車t 水平制表符u Unic

25、ode轉(zhuǎn)義序列U 代理項(xiàng)對(duì)的Unicode轉(zhuǎn)義序列v垂直制表符x類似于u,但長(zhǎng)度可變4 布爾類型 布爾類型數(shù)據(jù)就是邏輯型數(shù)據(jù),類型標(biāo)識(shí)符為bool,用來(lái)表示邏輯真和邏輯假,其值只有true和false。【注意】很多編程語(yǔ)言中(如、+)都可以用1表示邏輯值true,用0表示邏輯值false,但是在C#中聲明為bool類型數(shù)據(jù)時(shí),不能用1(0)替代true(false),否則會(huì)報(bào)錯(cuò)。 5 結(jié)構(gòu)類型 前面介紹的四種類型為基本數(shù)值型數(shù)據(jù),除了這四種基本數(shù)據(jù)類型以外,在程序中,經(jīng)常需要管理一些復(fù)雜數(shù)據(jù),比如包含多個(gè)簡(jiǎn)單類型數(shù)據(jù)的一組數(shù)據(jù)。結(jié)構(gòu)類型數(shù)據(jù)就是C#中一種特殊的數(shù)據(jù)類型,它本身不是一個(gè)數(shù)值或一個(gè)

26、字符,而是可包含多種不同類型數(shù)據(jù)并自定義其類型名稱的一種數(shù)據(jù)類型。使用結(jié)構(gòu)類型時(shí),可將不同類型數(shù)據(jù)作為一個(gè)整體進(jìn)行管理,實(shí)現(xiàn)數(shù)據(jù)的結(jié)構(gòu)化。 5 結(jié)構(gòu)類型 例如,在學(xué)生管理系統(tǒng)中,將學(xué)生的姓名、學(xué)號(hào)和性別作為一個(gè)整體結(jié)構(gòu)進(jìn)行處理,將一個(gè)學(xué)生作為該結(jié)構(gòu)的數(shù)據(jù)元素進(jìn)行定義。 /聲明結(jié)構(gòu)類型public struct students /struct指定結(jié)構(gòu)體類型,students為類型名 public string name; /結(jié)構(gòu)體成員name,為字符串類型 public char sex; /結(jié)構(gòu)體成員sex,為字符類型 public int num; /結(jié)構(gòu)體成員num,為整型/用結(jié)構(gòu)類型s

27、tudents定義數(shù)據(jù)students stu1;/為結(jié)構(gòu)中所有成員賦值=”張三”;stu1.sex=男;stu1.num=201701; 6 枚舉類型 枚舉類型也是一種復(fù)雜數(shù)據(jù)類型,主要用于表示一組邏輯上相關(guān)聯(lián)的項(xiàng)的組合,為簡(jiǎn)單類型的數(shù)值提供別名表示,使用關(guān)鍵字enmu來(lái)定義。最典型的事例是用枚舉類型枚舉星期,定義方式為: /定義枚舉類型enum WeekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;/用枚舉類型定義變量Weekday w1;/給枚舉變量賦值,其值只能為枚舉元素w1=Weekday.Monday;2.1

28、.2 引用類型 在程序中,對(duì)于定義的變量,值類型數(shù)據(jù)存儲(chǔ)的是變量本身的值,在引用類型數(shù)據(jù)中,存儲(chǔ)了存放該變量的地址值。C#的引用類型主要包括數(shù)組(array)、類(class)、接口(interface)、委托(delegate)以及內(nèi)置引用類型object和字符串(string)。關(guān)于類、接口和委托的部分會(huì)在后面章節(jié)里詳細(xì)介紹,這里主要介紹數(shù)組類型和字符串類型數(shù)據(jù)。 1. 數(shù)組數(shù)組是一種特殊的數(shù)據(jù)結(jié)構(gòu),其作用是將一批類型相同的數(shù)據(jù)元素進(jìn)行有序的集合和管理。數(shù)組中的元素存儲(chǔ)在一段連續(xù)的內(nèi)存塊中,每個(gè)元素對(duì)應(yīng)唯一的索引,可根據(jù)數(shù)組名和元素索引值(下標(biāo)值)訪問(wèn)其中的某一個(gè)數(shù)組元素。數(shù)組包括:(1)

29、一維數(shù)組(2)多維數(shù)組 (1)一維數(shù)組 C#中采用下列方式聲明數(shù)組: baseType arrayName;其中,baseType指定數(shù)組的數(shù)據(jù)類型,它可以是任意的變量類型,如前面介紹的整型、結(jié)構(gòu)型等。在使用數(shù)組前,需要進(jìn)行初始化操作,可使用new關(guān)鍵字進(jìn)行數(shù)組對(duì)象的實(shí)例化操作。定義一個(gè)包含5個(gè)元素的整型數(shù)組并進(jìn)行初始化操作: int array=new int5; (1)一維數(shù)組 也可以在創(chuàng)建數(shù)組時(shí)對(duì)元素進(jìn)行賦值,通過(guò)確定的元素值,可以確定數(shù)組元素的個(gè)數(shù),如:int array=5,10,20,12,30;引用數(shù)組的某一個(gè)元素時(shí),使用數(shù)組名元素索引的方式,元素索引值從0開始,如果一個(gè)數(shù)組的長(zhǎng)

30、度為n,則索引范圍是0(n-1)。例如需將上述數(shù)組中第三個(gè)元素的內(nèi)容讀入一個(gè)整型變量中,則應(yīng)表示為:int a;a=array2; 讀取a的值為 20(2)多維數(shù)組 在定義一維數(shù)組時(shí)只指定了一個(gè)下標(biāo)值,即指定了數(shù)組長(zhǎng)度,每個(gè)數(shù)組元素只有一個(gè)值。如果一個(gè)數(shù)組中的每一個(gè)元素都是由n個(gè)該數(shù)據(jù)類型的數(shù)據(jù)所構(gòu)成,則稱該數(shù)組為二維數(shù)組;以此類推。定義多維數(shù)組時(shí),需要在方括號(hào)內(nèi)添加逗號(hào)“,”,以確認(rèn)數(shù)組的維度,然后再賦值或者定義元素?cái)?shù)量,以二維數(shù)組為例,定義并初始化方式為: baseType , arrayName=new baseTypeN1,N2; (2)多維數(shù)組 例如,定義一個(gè)有5個(gè)元素的二維數(shù)組,要

31、求每個(gè)元素包含3個(gè)整型變量,則int , intArray=new int5,3;在理解上,可以想象二維數(shù)組的第一維度是行,第二維度是列,則上述定義了一個(gè)總共有5行,每行上有3個(gè)整型元素的二維數(shù)組。 (2)多維數(shù)組 在對(duì)二維數(shù)組賦值時(shí),需要將每個(gè)包含有多個(gè)數(shù)據(jù)的元素用大括號(hào)“”括起來(lái),例如:char , chArray=a, b,張, 李,0,1;表示定義了一個(gè)字符類型的二維數(shù)組,總共有三行元素,每行又包含兩個(gè)數(shù)據(jù)。在訪問(wèn)二維數(shù)組的某個(gè)數(shù)據(jù)時(shí),需要提供行和列上的兩個(gè)索引值來(lái)指定元素的位置,如:char c;c=chArray1,0; 字符c 的值是張。2 字符串 在值類型數(shù)據(jù)中,用char類型

32、定義一個(gè)字符,如果是多個(gè)字符的集合,則使用字符串類型定義。字符串類型是C#中最簡(jiǎn)單的引用類型數(shù)據(jù),類型關(guān)鍵字是string。在書寫字符串類型數(shù)據(jù)時(shí),需要在字符串引用兩側(cè)添加雙引號(hào)“”。 string str=”Hello C#!”;對(duì)于string類型數(shù)據(jù),可以看作char類型的只讀數(shù)組,可以使用下列方式訪問(wèn)string數(shù)據(jù)中的某個(gè)字符:string str=”Hello C#!”; /定義字符串變量char ch=str4; /將字符串的索引值為4的字符賦值給字符變量chstring類型數(shù)據(jù)的索引值從0開始,所以,ch=o。 1 隱式轉(zhuǎn)換 在程序執(zhí)行過(guò)程中,不同類型的數(shù)據(jù)往往需要進(jìn)行類型轉(zhuǎn)換

33、,以期望程序正確執(zhí)行。在C#語(yǔ)言中,類型轉(zhuǎn)換有兩種形式:隱式轉(zhuǎn)換和顯示轉(zhuǎn)換。1. 隱式轉(zhuǎn)換對(duì)于值類型數(shù)據(jù)而言,數(shù)據(jù)類型A到數(shù)據(jù)類型B的轉(zhuǎn)換可以在任意狀況下進(jìn)行,由編譯器直接執(zhí)行轉(zhuǎn)換規(guī)則,稱之為隱式轉(zhuǎn)換。所以隱式轉(zhuǎn)換的規(guī)則是,由數(shù)值范圍小的數(shù)據(jù)類型向數(shù)值范圍大的數(shù)據(jù)類型轉(zhuǎn)換。 2 顯示轉(zhuǎn)換 2. 顯示轉(zhuǎn)換明確需要將數(shù)據(jù)類型轉(zhuǎn)換為特定的數(shù)據(jù)類型,則是顯示轉(zhuǎn)換。該操作需要編寫額外的代碼實(shí)現(xiàn)。根據(jù)數(shù)據(jù)類型不同,可采用下列幾種方式進(jìn)行顯示轉(zhuǎn)換。(1)強(qiáng)制類型轉(zhuǎn)換(2)使用Convert命令進(jìn)行顯示轉(zhuǎn)換(3)使用ToString方法轉(zhuǎn)換 2 顯示轉(zhuǎn)換 (1)強(qiáng)制類型轉(zhuǎn)換轉(zhuǎn)換格式:(類型名)(表達(dá)式)表示將

34、表達(dá)式強(qiáng)制轉(zhuǎn)換成括號(hào)類指定的類型。如果要將一個(gè)對(duì)象類型顯示轉(zhuǎn)換為值類型數(shù)據(jù),或?qū)⒁粋€(gè)接口類型顯示轉(zhuǎn)換為執(zhí)行該接口的值類型數(shù)據(jù),也會(huì)用到強(qiáng)制類型轉(zhuǎn)換的方式,稱之為拆箱操作。 (int)x; /將x強(qiáng)制轉(zhuǎn)換成整型(float)(5/3); /將5/3的值強(qiáng)制轉(zhuǎn)換成單精度實(shí)數(shù)int intData=10; /定義整型變量intDataobject objData=intData; /裝箱int intData2=(int)objData; /拆箱,將objData對(duì)象強(qiáng)制轉(zhuǎn)換成int類型2 顯示轉(zhuǎn)換 (2)使用Convert命令進(jìn)行顯示轉(zhuǎn)換 命令方式轉(zhuǎn)換方式Convert.ToBoolean(val

35、ue)將value值轉(zhuǎn)換為bool類型Convert.ToByte(value)將value值轉(zhuǎn)換為Byte類型Convert.ToChar(value)將value值轉(zhuǎn)換為char類型Convert.ToDecimal(value)將value值轉(zhuǎn)換為Decimal類型Convert.ToDouble(value)將value值轉(zhuǎn)換為double類型Convert.ToInt16(value)將value值轉(zhuǎn)換為short類型Convert.ToInt32(value)將value值轉(zhuǎn)換為int類型Convert.ToInt64(value)將value值轉(zhuǎn)換為long類型Convert.T

36、oSByte(value)將value值轉(zhuǎn)換為sbyte類型Convert.ToSingle(value)將value值轉(zhuǎn)換為float類型Convert.ToString(value)將value值轉(zhuǎn)換為string類型Convert.ToUInt16(value)將value值轉(zhuǎn)換為ushort類型Convert.ToUInt32(value)將value值轉(zhuǎn)換為uint類型Convert.ToUInt64(value)將value值轉(zhuǎn)換為ulong類型2 顯示轉(zhuǎn)換 (3)使用ToString方法轉(zhuǎn)換如果想將其他類型數(shù)據(jù)轉(zhuǎn)換為字符串類型,大多數(shù)都可以使用類型自帶的ToString()方法,

37、其通常用于將變量轉(zhuǎn)換為字符串類型數(shù)據(jù)。例如: int a=3; /定義整型變量a,初始值為3string s=a.ToString(); /將整型變量a的值轉(zhuǎn)換為字符串賦值給字符串類型變量s第2章 C#語(yǔ)法基礎(chǔ) 2.2 變量和常量2.2 變量和常量 變量和常量是在所有編程語(yǔ)言中都非常重要的一個(gè)概念,在前面部分也經(jīng)常被提到。在程序執(zhí)行過(guò)程中,其值可以發(fā)生改變的量稱為變量,需要定義數(shù)據(jù)類型、名稱并存放在內(nèi)存空間里。而值不能發(fā)生改變的稱為常量,比如12,10都是整型常量 2.2 變量和常量2.2.1 變量2.2.2 常量2.2.1 變量 在編寫程序過(guò)程中,變量需要先聲明在使用。聲明時(shí),要指定變量的名

38、稱和數(shù)據(jù)類型。變量聲明方式是: type name; /type指定數(shù)據(jù)類型,name指定變量名表列 int a; /聲明一個(gè)整型變量achar ch1,ch2; /聲明兩個(gè)字符變量ch1,ch2bool b; /聲明一個(gè)布爾類型變量b 每個(gè)變量都有一個(gè)自己的名稱,其命名規(guī)則符合標(biāo)識(shí)符的命名規(guī)則,只能由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須是字母或下劃線,但變量名不可以和C#語(yǔ)言關(guān)鍵字或類名相同。 2.2.1 變量 在聲明變量時(shí)需要進(jìn)行初始化變量值的操作,也可以在程序執(zhí)行過(guò)程中不斷的修改變量存儲(chǔ)的值,以下方式都可以對(duì)變量進(jìn)行賦值。 變量只有在賦值后才能使用,賦值時(shí)要根據(jù)變量的類型來(lái)進(jìn)

39、行賦值。 int a=10; /聲明整型變量a并賦值int a; a=10; /聲明整型變量a,再通過(guò)賦值語(yǔ)句對(duì)a賦值2.2.2 常量 在編程過(guò)程中,值不會(huì)改變的量稱為常量。在C#中可以用const關(guān)鍵字定義符號(hào)表示常量。常量也可以看作是變量的一種特殊情況,在內(nèi)存中只能被讀取,不能被修改。使用const關(guān)鍵字定義常量格式為: const Type ConstantName; /Type指定類型,ConstantName指定常量名例如,定義單精度實(shí)數(shù)Pi表示圓周率 const float Pi=3.1415926 f;第2章 C#語(yǔ)法基礎(chǔ) 2.3 語(yǔ)句2.3 語(yǔ)句 程序中,語(yǔ)句是執(zhí)行操作的命令,

40、比如對(duì)變量進(jìn)行賦值操作,處理數(shù)據(jù)時(shí)進(jìn)行的運(yùn)算操作,比較兩個(gè)數(shù)據(jù)關(guān)系時(shí)的比較操作,存儲(chǔ)結(jié)果操作等等。在C#中,任何語(yǔ)句都必須以分號(hào)“;”終止,否則語(yǔ)句不能被編譯。我們分別從表達(dá)式語(yǔ)句、流程控制語(yǔ)句和異常處理語(yǔ)句來(lái)介紹C#的語(yǔ)句。 2.3 語(yǔ)句2.3.1 表達(dá)式語(yǔ)句2.3.2 流程控制語(yǔ)句2.3.3 異常處理語(yǔ)句2.3.1 表達(dá)式語(yǔ)句 表達(dá)式語(yǔ)句是C#程序中最基本的語(yǔ)句,在介紹表達(dá)式語(yǔ)句以前,需要先了解一下C#中的表達(dá)式。由操作數(shù)和運(yùn)算符組成的序列稱之為表達(dá)式,包括算術(shù)運(yùn)算表達(dá)式、賦值運(yùn)算表達(dá)式、關(guān)系運(yùn)算表達(dá)式、邏輯運(yùn)算表達(dá)式等。 1 算術(shù)運(yùn)算和算術(shù)運(yùn)算語(yǔ)句 算術(shù)運(yùn)算是最基本的數(shù)據(jù)運(yùn)算,主要用于實(shí)

41、現(xiàn)數(shù)學(xué)運(yùn)算功能,算術(shù)運(yùn)算只能處理整型數(shù)據(jù)和實(shí)型數(shù)據(jù)。 C#支持的算術(shù)運(yùn)算符包括以下7種:+:加法運(yùn)算符(正值運(yùn)算符),如5+8,a+b-:減法運(yùn)算符(負(fù)值運(yùn)算符),如8-5,a-b*:乘法運(yùn)算符,如5*8,a*b/:除法運(yùn)算符,如8/5,a/b%:取模運(yùn)算符(求兩個(gè)整數(shù)相除后的余數(shù)),如8%5,a%b+:自增運(yùn)算符,使整型變量的值增1,如a+,+n-:自減運(yùn)算符,使整型變量的值減1,如a-,-n 1 算術(shù)運(yùn)算和算術(shù)運(yùn)算語(yǔ)句 【說(shuō)明】除法運(yùn)算時(shí),兩個(gè)整數(shù)相除的值為整數(shù),系統(tǒng)會(huì)舍去小數(shù)部分。當(dāng)整數(shù)與實(shí)數(shù)參與除法運(yùn)算時(shí),系統(tǒng)會(huì)自動(dòng)把整數(shù)、單精度實(shí)數(shù)都按double類型數(shù)據(jù)處理。取模運(yùn)算中,只能是兩個(gè)

42、整數(shù)參與運(yùn)算,取相除后的余數(shù)。如,8/5=1,8%5=3,注意區(qū)分兩種運(yùn)算過(guò)程。在自增自減運(yùn)算中,自增自減運(yùn)算符可以以前綴方式或者后綴方式進(jìn)行運(yùn)算。 2 賦值運(yùn)算和賦值運(yùn)算語(yǔ)句 賦值運(yùn)算是將一個(gè)數(shù)據(jù)(表達(dá)式)的值賦值給一個(gè)變量,賦值運(yùn)算符為“=”,由賦值運(yùn)算符和一個(gè)表達(dá)式連接在一起的式子稱為“賦值表達(dá)式”,表達(dá)式后加上分號(hào)構(gòu)成賦值語(yǔ)句。賦值運(yùn)算是右結(jié)合性,即按“自右向左”的方向結(jié)合運(yùn)算,所以“a=(b=5)”與“a=b=5”等價(jià)。在給變量進(jìn)行賦值時(shí),以最后的賦值為準(zhǔn)。C#也支持復(fù)合賦值運(yùn)算,如+=、-=、*=、/=、%=。3 關(guān)系運(yùn)算 關(guān)系運(yùn)算符分為以下幾類:(1)基本比較運(yùn)算符用于比較兩個(gè)表

43、達(dá)式的大小關(guān)系,如果滿足關(guān)系,表達(dá)式返回邏輯真值true,否則返回邏輯假false。常見比較運(yùn)算符有:=、!=、=(2)類型比較運(yùn)算is運(yùn)算符用于判斷對(duì)象是否屬于某個(gè)類的實(shí)例,如果是,返回true,否則返回false。as運(yùn)算符用于在兼容的引用類型中執(zhí)行某些類型的轉(zhuǎn)換,其只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換,不執(zhí)行用戶自定義轉(zhuǎn)換。4 邏輯運(yùn)算 邏輯運(yùn)算是針對(duì)邏輯型數(shù)據(jù)判斷其邏輯結(jié)果的一種運(yùn)算,用邏輯運(yùn)算符和表達(dá)式構(gòu)成的式子稱之為邏輯表達(dá)式,其返回值為邏輯值,邏輯運(yùn)算表達(dá)式也多用于條件判斷結(jié)構(gòu)中,C#中有以下邏輯運(yùn)算符:&:邏輯與運(yùn)算符,若運(yùn)算符兩側(cè)的表達(dá)式值都為真(true)時(shí),則邏輯運(yùn)算表達(dá)式值為真|:

44、邏輯或運(yùn)算符,若運(yùn)算符兩側(cè)的表達(dá)式中包含真(true)值時(shí),則邏輯運(yùn)算表達(dá)式值即為真!: 邏輯非運(yùn)算符,對(duì)某個(gè)表達(dá)式進(jìn)行取反操作,若表達(dá)式為真,則邏輯運(yùn)算表達(dá)式值為假5 按位運(yùn)算 (1)按位邏輯運(yùn)算指將整數(shù)轉(zhuǎn)換為二進(jìn)制形式,將每一個(gè)數(shù)位上的0視為邏輯假(false),數(shù)位上的1視為邏輯真(true),再進(jìn)行邏輯運(yùn)算。按位邏輯運(yùn)算有以下四種運(yùn)算符: &、| 、。(2)按位位移運(yùn)算指二進(jìn)制數(shù)的數(shù)位位置進(jìn)行移動(dòng)操作的運(yùn)算。C#中提供左移運(yùn)算和右移運(yùn)算兩種按位位移運(yùn)算符。左移運(yùn)算符是。(3)按位賦值運(yùn)算類似于賦值運(yùn)算中的復(fù)合賦值運(yùn)算的形式,按位賦值運(yùn)算是將前兩種位運(yùn)算符結(jié)合賦值運(yùn)算符使用。如:&=、|

45、=、=。2.3.2 流程控制語(yǔ)句 前面所介紹的基本語(yǔ)句,在默認(rèn)狀況下,是按照從上而下按順序逐行執(zhí)行的。但在實(shí)際開發(fā)過(guò)程中,需要控制程序執(zhí)行的順序,主要有兩種流程控制方式:條件分支控制:if、switch循環(huán)控制: while、dowhile、for和foreach循環(huán) if語(yǔ)句 (1)if語(yǔ)句if語(yǔ)句是單分支條件控制語(yǔ)句,表示如果表達(dá)式值為真,則執(zhí)行語(yǔ)句(語(yǔ)句塊)。語(yǔ)句塊是由多條語(yǔ)句組合而成,需用大括號(hào)括起來(lái)。其格式為:當(dāng)表達(dá)式值為真時(shí)執(zhí)行語(yǔ)句塊if(表達(dá)式) 語(yǔ)句塊;ifelse語(yǔ)句 (2)ifelse語(yǔ)句ifelse語(yǔ)句是雙分支控制語(yǔ)句,表示根據(jù)條件表達(dá)式的邏輯值,選擇執(zhí)行兩個(gè)語(yǔ)句塊中的某

46、一個(gè)。其格式為:if(表達(dá)式) 語(yǔ)句塊1;else 語(yǔ)句塊2;當(dāng)表達(dá)式值為真時(shí)執(zhí)行語(yǔ)句塊1,否則執(zhí)行else后的語(yǔ)句塊2嵌套if語(yǔ)句 (3)嵌套if語(yǔ)句if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1;else語(yǔ)句2;elseif(表達(dá)式3)語(yǔ)句3;else語(yǔ)句4;if(表達(dá)式1) 語(yǔ)句塊1;else if(表達(dá)式2) 語(yǔ)句塊2 else if(表達(dá)式n) 語(yǔ)句塊n; else 語(yǔ)句塊; 內(nèi)嵌ififelse if語(yǔ)句塊switch語(yǔ)句 (4)switch語(yǔ)句switch語(yǔ)句的基本格式為:當(dāng)表達(dá)式的值與某個(gè)case常量表達(dá)式的值相等時(shí),就執(zhí)行該case后的語(yǔ)句switch(表達(dá)式) case常量表達(dá)式1

47、: 語(yǔ)句1; case常量表達(dá)式2: 語(yǔ)句2; case常量表達(dá)式n: 語(yǔ)句n; default : 語(yǔ)句n+1; break;while循環(huán) (1)while循環(huán)控制while是循環(huán)中最基本的循環(huán)語(yǔ)句,稱之為“當(dāng)型”循環(huán)。其一般格式為: while (條件表達(dá)式) 循環(huán)體語(yǔ)句;圖2-3 while循環(huán)執(zhí)行流程dowhile循環(huán) (2)dowhile循環(huán)控制dowhile是“直到型”循環(huán),表示執(zhí)行循環(huán)體語(yǔ)句,直到不滿足循環(huán)條件時(shí)結(jié)束循環(huán)。其一般格式為: do循環(huán)體語(yǔ)句;while(條件表達(dá)式);圖2-4 dowhile循環(huán)執(zhí)行流程for循環(huán) (3)for循環(huán)控制C#程序中,for循環(huán)形式最常用

48、,最靈活,其一般格式為: for(初始表達(dá)式;條件表達(dá)式;迭代表達(dá)式)循環(huán)體語(yǔ)句;初始表達(dá)式:可用來(lái)設(shè)定循環(huán)控制變量,并為變量賦初始值。條件表達(dá)式:其值為邏輯量,為真時(shí)繼續(xù)循環(huán),為假時(shí)循環(huán)終止。迭代表達(dá)式:決定循環(huán)控制變量在每次循環(huán)后是如何改變的。 for循環(huán) (3)for循環(huán)控制for循環(huán)的執(zhí)行流程如下:當(dāng)循環(huán)第一次開始時(shí),先執(zhí)行循環(huán)的初始表達(dá)式。求解條件表達(dá)式,若是真(true),執(zhí)行循環(huán)體語(yǔ)句;若為假(false),則循環(huán)中止。執(zhí)行迭代表達(dá)式。跳轉(zhuǎn)到第步執(zhí)行。 圖2-5 for循環(huán)執(zhí)行流程foreach循環(huán) (4)foreach循環(huán)在C#中,針對(duì)訪問(wèn)數(shù)組或?qū)ο蠹现械乃性?,提供了一種

49、較為簡(jiǎn)單的方式使用foreach循環(huán)語(yǔ)句。其一般格式為: foreach(數(shù)據(jù)類型 標(biāo)識(shí)符 in 數(shù)組/集合)數(shù)據(jù)類型指標(biāo)識(shí)符的類型,應(yīng)和數(shù)組(集合)的數(shù)據(jù)類型相同,或大于數(shù)組(集合)的數(shù)據(jù)類型。標(biāo)識(shí)符用來(lái)表示數(shù)組元素的名稱。數(shù)組集合指要訪問(wèn)的數(shù)組(集合)。 循環(huán)中斷語(yǔ)句 (5)循環(huán)中斷語(yǔ)句在循環(huán)過(guò)程中,除了依靠循環(huán)條件的限定來(lái)結(jié)束循環(huán)以外,經(jīng)常也需要主動(dòng)中斷循環(huán)。主動(dòng)中斷主要有以下形式:break語(yǔ)句 :表示終止所有循環(huán),跳出循環(huán)結(jié)構(gòu),繼續(xù)執(zhí)行循環(huán)之后的操作。continue語(yǔ)句:立即終止本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)。goto語(yǔ)句:通過(guò)goto語(yǔ)句可以跳出循環(huán),跳轉(zhuǎn)到指定的位置上,在編寫程序

50、過(guò)程中,不建議經(jīng)常使用goto語(yǔ)句,因?yàn)槌绦蛑械碾S意跳轉(zhuǎn),會(huì)導(dǎo)致程序混亂,程序可讀性降低。2.3.3 異常處理語(yǔ)句 在.NET Framework中,用Exception類表示基類異常,在處理異常時(shí),會(huì)用到4個(gè)關(guān)鍵字:try、catch、throw和finally。使用throw語(yǔ)句主動(dòng)拋出異常;使用try/catch語(yǔ)句塊中的try語(yǔ)句監(jiān)控可能受到異常的語(yǔ)句,并使用catch語(yǔ)句處理產(chǎn)生的異常;在try/catch語(yǔ)句塊中結(jié)合finally語(yǔ)句繼續(xù)執(zhí)行后面程序的代碼。 1 throw語(yǔ)句 throw語(yǔ)句允許在特定的情形下主動(dòng)拋出異常,其基本格式為: throw expression;其中:e

51、xpression表示所要拋出的異常對(duì)象,這個(gè)異常對(duì)象是派生自System.Exception類的對(duì)象。因?yàn)閠hrow語(yǔ)句會(huì)無(wú)條件的將控制轉(zhuǎn)向別處,所以throw語(yǔ)句的終點(diǎn)永遠(yuǎn)都是不可及的。當(dāng)異常被拋出時(shí),控制會(huì)轉(zhuǎn)移給try語(yǔ)句里第一個(gè)能夠處理該異常的catch語(yǔ)句。從異常被拋出的那一點(diǎn)開始到控制轉(zhuǎn)移到合適的異常處理語(yǔ)句的過(guò)程被稱為異常傳播(exception propagagtion)。 2 try語(yǔ)句 try語(yǔ)句有三種形式:一個(gè)try塊后面跟一個(gè)或者多個(gè)catch塊。一個(gè)try塊后面跟一個(gè)finally塊。一個(gè)try塊后面跟一個(gè)或者多個(gè)catch塊,再跟一個(gè)finally塊。try/cat

52、ch異常處理塊的基本形式為: try/需監(jiān)控的代碼catch(產(chǎn)生異常的類型 變量)/捕捉異常后,處理異常執(zhí)行的操作catch(產(chǎn)生異常的類型 變量)/捕捉異常后,處理異常執(zhí)行的操作2 try語(yǔ)句 在使用finally塊時(shí),可以清除try中分配的任何資源,并且可以運(yùn)行任何即使在發(fā)生異常時(shí)也必須執(zhí)行的代碼,代碼的最終執(zhí)行都會(huì)傳遞給finally塊,與try/catch塊的退出方式無(wú)關(guān)。使用finally的通常形式為: try/需監(jiān)控的代碼catch(產(chǎn)生異常的類型 變量)/捕捉異常后,處理異常執(zhí)行的操作catch(產(chǎn)生異常的類型 變量)/捕捉異常后,處理異常執(zhí)行的操作finally /final

53、ly語(yǔ)句2 try語(yǔ)句 在System中定義了一些標(biāo)準(zhǔn)的內(nèi)置異常。C#中常用的標(biāo)準(zhǔn)異常如表2-6所示。 異常含義ArrayTypeMismatchException所存儲(chǔ)的值類型與數(shù)組的類型不兼容DivideByZeroException被零除IndexOutOfRangeException數(shù)組索引超出邊界InvalidCastException運(yùn)行時(shí)強(qiáng)制轉(zhuǎn)換無(wú)效OutOfMemoryException沒有足夠的空間內(nèi)存支持程序繼續(xù)執(zhí)行OverflowException運(yùn)算溢出NullReferenceException試圖對(duì)空引用進(jìn)行操作,引用沒有指向任何對(duì)象第2章 C#語(yǔ)法基礎(chǔ) 2.4 隨

54、機(jī)數(shù)2.4 隨機(jī)數(shù) 在統(tǒng)計(jì)學(xué)中,不同技術(shù)都會(huì)應(yīng)用隨機(jī)數(shù),希望通過(guò)隨機(jī)產(chǎn)生的樣本數(shù)進(jìn)行統(tǒng)計(jì)計(jì)算。一般情況下,我們會(huì)使用偽隨機(jī)數(shù)。在C#中,產(chǎn)生偽隨機(jī)數(shù)是用Random類實(shí)現(xiàn)的。Random類中默認(rèn)的無(wú)參構(gòu)造函數(shù)是根據(jù)當(dāng)前系統(tǒng)時(shí)間為種子,通過(guò)一定算法得出要求范圍內(nèi)的偽隨機(jī)數(shù)。程序中需要產(chǎn)生一個(gè)隨機(jī)數(shù)時(shí),需要通過(guò)Random 類創(chuàng)建對(duì)象,再使用該對(duì)象的Next()方法或者NextDouble()方法來(lái)產(chǎn)生隨機(jī)數(shù)。 2.4 隨機(jī)數(shù) 1. 產(chǎn)生隨機(jī)整數(shù)使用Random類創(chuàng)建對(duì)象,調(diào)用.Next()重載方法時(shí),可以產(chǎn)生一個(gè)指定范圍的隨機(jī)整數(shù),具體分以下幾種重載情況:(1).Next():系統(tǒng)以當(dāng)前時(shí)間為隨

55、機(jī)數(shù)種子,返回一個(gè)非負(fù)隨機(jī)整數(shù)(2).Next(int maxValue):系統(tǒng)以當(dāng)前時(shí)間為隨機(jī)數(shù)種子,返回一個(gè)0maxValue-1的隨機(jī)整數(shù)(3).Next(int minValue,int maxValue):系統(tǒng)以當(dāng)前時(shí)間為隨機(jī)數(shù)種子,返回一個(gè)minValuemaxValue-1的隨機(jī)整數(shù)。 2.4 隨機(jī)數(shù) 2. 產(chǎn)生隨機(jī)浮點(diǎn)數(shù)通過(guò)Random類的.NextDouble()方法,可以返回一個(gè)0到1(小于1)的隨機(jī)浮點(diǎn)數(shù)。如果想生成兩個(gè)任意值之間的隨機(jī)浮點(diǎn)數(shù)可以結(jié)合.Next(int minValue,int maxValue)方法使用??梢酝ㄟ^(guò)公式Random.NextDouble()

56、*(maxValue-minValue)+minValue進(jìn)行轉(zhuǎn)換。第2章 C#語(yǔ)法基礎(chǔ) 謝謝! 第3章 C#面向?qū)ο蟪绦蛟O(shè)計(jì)第3章 C#面向?qū)ο蟪绦蛟O(shè)計(jì)3.1 類3.2 繼承與多態(tài)3.3 接口3.4 委托與事件3.5 應(yīng)用實(shí)例:人員工資管理第3章 C#面向?qū)ο蟪绦蛟O(shè)計(jì) 3.1 類3.1 類C#是一門純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。什么是面向?qū)ο竽兀课覀冊(cè)谇懊娼榻B過(guò),C#由C語(yǔ)言和C+演化而來(lái),C語(yǔ)言是一種基于過(guò)程的編程語(yǔ)言,采用自頂向下結(jié)構(gòu)化的設(shè)計(jì)思想,詳細(xì)描述程序中的數(shù)據(jù)結(jié)構(gòu)和對(duì)數(shù)據(jù)的操作。而面向?qū)ο蟮某绦蛟O(shè)計(jì)思路,更符合實(shí)際生活情況。比如生產(chǎn)一輛汽車,在面向?qū)ο蟮脑O(shè)計(jì)思路中,會(huì)把汽車拆分為

57、多個(gè)模塊,把引擎當(dāng)作一個(gè)對(duì)象,車輪當(dāng)作一個(gè)對(duì)象,有單獨(dú)生產(chǎn)引擎的工廠,也有單獨(dú)生產(chǎn)車輪的工廠,各司其責(zé),在生產(chǎn)汽車時(shí),只需要將各個(gè)對(duì)象組裝起來(lái)。如果需要改進(jìn)其中的某個(gè)部分,只需要對(duì)單獨(dú)的模塊更新和替換。 3.1 類在學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)時(shí),首先需要了解幾個(gè)概念:對(duì)象。在客觀世界里的一切事物都是對(duì)象。類。將具有相同或相似性質(zhì)的對(duì)象抽象出本質(zhì),就形成類。封裝。面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要特點(diǎn)就是“封裝性”。繼承。面向?qū)ο蟪绦蛟O(shè)計(jì)提供繼承機(jī)制。多態(tài)。多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的另一重要特點(diǎn)。 3.1 類3.1.1 類的聲明3.1.2 類的成員3.1.3 泛型類3.1.1 類的聲明 類是面向?qū)ο蟪绦蛟O(shè)計(jì)的最

58、基本模塊,和理解面向?qū)ο蟮乃枷肷杂胁煌?,在編寫程序時(shí),要先定義類,再使用類來(lái)創(chuàng)建實(shí)例化對(duì)象。在C#中,創(chuàng)建新類時(shí)要使用類的聲明,類需要以class開頭,其基本聲明格式為: 訪問(wèn)修飾符 class 類名 訪問(wèn)修飾符 數(shù)據(jù)成員; 訪問(wèn)修飾符 方法名;3.1.1 類的聲明 聲明類時(shí),類中可以包含一個(gè)或多個(gè)屬性、方法、事件或嵌套類等成員,也可以沒有成員。其中:訪問(wèn)修飾符指定了對(duì)類和其成員的訪問(wèn)權(quán)限規(guī)則,不指定時(shí)使用默認(rèn)權(quán)限。類的默認(rèn)訪問(wèn)權(quán)限是internal,成員的默認(rèn)訪問(wèn)權(quán)限是private。數(shù)據(jù)類型指定了數(shù)據(jù)成員的變量類型。返回值類型指定了方法(函數(shù))的返回值類型。 3.1.1 類的聲明 類的訪問(wèn)

59、修飾符有以下幾種: private私有訪問(wèn)。表示僅限于本類成員可以訪問(wèn)和調(diào)用。public公有訪問(wèn)。無(wú)訪問(wèn)限制,可以被該程序集或其他任意程序集的類所訪問(wèn)。internal內(nèi)部訪問(wèn)。在該程序集中,所有的類均可以訪問(wèn)。Protected受保護(hù)訪問(wèn)。能被該類或該類的派生類所訪問(wèn)(能夠跨程序集被訪問(wèn))。3.1.1 類的聲明 在C#中,一般情況只能有一種訪問(wèn)修飾符,但有一種情況例外,可以定義修飾符為protected internal,實(shí)際上表示的含義是protected or internal,能被本程序集所有類或者其它程序集從該類繼承的子類所訪問(wèn)。 3.1.1 類的聲明 注意:在定義類名時(shí),一般會(huì)將

60、類名的首字母大寫,做到見名知意。在定義了Date類后,可以使用new關(guān)鍵字創(chuàng)建一個(gè)具體的Date類的對(duì)象,創(chuàng)建方式為:date是對(duì)象名,使用new關(guān)鍵字,創(chuàng)建了一個(gè)Date類型的對(duì)象。class Date /類名為Date /字段、屬性、方法、構(gòu)造函數(shù)等成員下列程序段是對(duì)一個(gè)類的簡(jiǎn)單聲明。 Date date = new Date( );3.1.2 類的成員 C#類的成員包括:常量、字段、屬性、方法、事件、索引、構(gòu)造函數(shù)、析構(gòu)函數(shù)以及嵌套的類等。所有的常量、字段、方法、屬性和事件都必須在類的內(nèi)部進(jìn)行聲明。1. 常量常量是在程序編譯過(guò)程中不會(huì)改變的值,C#中需要用const聲明,在類中聲明時(shí)要初

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論