中國石油大學C語言基礎第1章_第1頁
中國石油大學C語言基礎第1章_第2頁
中國石油大學C語言基礎第1章_第3頁
中國石油大學C語言基礎第1章_第4頁
中國石油大學C語言基礎第1章_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、高級程序設計地球科學與技術學院測繪系2015.102前 言n教材:C#程序設計與案例教程,楊樹林、胡潔萍編著,清華大學出版社,2007.08n參考書:C#入門經(jīng)典(第5版),(美)沃森、內格爾等著,齊立波翻譯,清華大學出版社,2010.12n上課時間: n周二1、2節(jié),西廊101,第7-10、13-17周n周四3、4節(jié),西廊101,第7-8、10、14、16周n上機時間: n周一1、2節(jié),微601,第9-10、13-17周n周三1、2節(jié),微601,第9、13、15周3課程主要內容 n第1章 C#語言基礎n第2章 面向對象程序設計n第3章 GUI程序設計n第4章 圖形、圖像程序設計n第5章 數(shù)據(jù)

2、庫程序設計n第6章 流和文件n第7章 線程(不講)n第8章 網(wǎng)絡程序設計(不講)n第9章 ASP.NET(不講)第第1章章 C#語言基礎語言基礎5第1章 目錄1.1 C#概述1.2 C#語言基礎1.3 控制語句1.4 數(shù)組1.5 異常處理61.1 C#概述概述n1、.NET概述n2、什么是C#n3、Visual Studio .Net集成開發(fā)環(huán)境n4、初識C#程序n5、命名空間71.1.1 .NET概述n.NET是微軟公司推出跨平臺、跨語言開發(fā)平臺。機器語言匯編語言高級語言硬件依賴高硬件依賴低可移植性低可移植性高可復用性低可復用性高81.1.1 .NET概述FORTRANC.NET(C#)源代

3、碼復用二進制碼復用Java跨平臺跨語言91.1.1 .NET概述n.NET Framework體系結構操作系統(tǒng)公共語言運行時 (CLR).Net Framework 類庫 (FCL)101.1.1 .NET概述nCLR和MSIL(CIL)日語漢語翻譯英語(中間語言)111.1.1 .NET概述nCLR和MSIL(CIL)121.1.1 .NET概述nCLR和MSIL(CIL) 編譯C# | -程序集(.exe、.dllMSIL)、元信息數(shù)據(jù)信息、可選資源圖片、聲音) | (Microsoft Intermediate Language 微軟中間語言) | | -.NET CLR (Common

4、 Language Runtime 公共語言運行庫) | -JIT編譯 (Just-In-Time,稱為即時編譯,僅在需要時才編譯MSIL) | 機器代碼 131.1.1 .NET概述nCLR和MSIL(CIL)n有了CLR,保證了.NET 中一種語言具有的功能其他語言也都具有。nMicrosoft 中間語言 (MSIL) 由一組特定的指令組成,這些指令指明如何執(zhí)行代碼。nJIT 編譯器的主要工作是將普通 MSIL 代碼轉換為可以直接由 CPU 執(zhí)行的計算機代碼。n系統(tǒng)進程可以輕松讀取 MSIL 代碼。141.1.1 .NET概述n.NET組成nNET平臺包括.NET框架-NET框架(Fram

5、ework)是開發(fā)平臺的基礎n公共語言運行時(CLR)n.NET類庫n.NET開發(fā)工具等組成部分。n .NET編程語言(C+.NET C#.NET VB.NET)n. Visual Studio.NET集成開發(fā)環(huán)境15基本框架類.Net Framework.Net Framework 類庫類庫ASP.NETCLSCLRCTS1.1.1 .NET概述16n.NET版本1.1.1 .NET概述17nCLS(Common Language Specification):不同語言程序之間相互通用必須遵守的規(guī)則和限制。nCTS(Common Type System):CLS中對數(shù)據(jù)類型的規(guī)定。 1.1.

6、1 .NET概述181.1.2 什么是C#nC#是微軟推出的一種基于.NET框架的、面向對象的高級編程語言。C#由C語言和C+派生而來,繼承了其強大的性能,同時又以.NET 框架類庫作為基礎,擁有類似Visual Basic的快速開發(fā)能力。C#由安德斯海爾斯伯格主持開發(fā),微軟在2000年發(fā)布了這種語言。n原Borland公司的首席研發(fā)設計師安德斯海爾斯伯格(Anders Hejlsberg)在微軟開發(fā)了Visual J+ 1.0,很快的Visual J+由1.1版本升級到6.0版。SUN公司認為Visual J+ 違反了Java開發(fā)平臺的中立性,對微軟提出了訴訟。2000年6月26日微軟在奧蘭

7、多舉行的“職業(yè)開發(fā)人員技術大會”(PDC 2000)上,發(fā)表新的語言C#。C#語言取代了Visual J+,語言本身深受 Java、C 和 C+ 的影響。191.1.2 什么是C#n版本 C#版本變化和.Net Framework版本變化一樣,新版本總是在舊版本基礎上增加了新的功能或增強了已有功能。201.1.2 什么是C#n語言特征,相對于C和C+,C#在許多方面進行了限制和增強:n指針(Pointer)只能被用于不安全模式。大多數(shù)對象訪問通過安全的引用實現(xiàn),以避免無效的調用。n對象不需要被顯式釋放,代替為當不存在被引用時通過垃圾回收器回收。n只允許單一繼承(single inheritan

8、ce),但是一個類可以實現(xiàn)多個接口(interfaces)。nC#比C+更加類型安全。默認的安全轉換是隱含轉換,例如由短整型轉換為長整型和從派生類轉換為基類。而布爾型同整型,及枚舉型同整型不允許隱含轉換。n數(shù)組聲明語法不同(int a = new int5 而不是 int a5)。n屬性支持,使用類似訪問成員的方式調用。211.1.3 Visual Studio.NET集成開發(fā)環(huán)境nVisual Studio集成開發(fā)工具不同版本22Microsoft Visual Studio起始頁23新建項目對話框24n代碼編輯器,用于編寫源代碼。n“工具箱”,用于使用鼠標迅速開發(fā)可視化界面。n解決方案資源

9、管理器 ,用于查看和管理項目文件和設置。n項目設計器 ,用于配置編譯器選項、部署路徑、資源及更多其他內容。n屬性窗口,用于配置用戶界面中控件的屬性和事件。nVisual Studio 調試器,用于對程序進行測試。n類視圖,用于根據(jù)類型(而不是文件)在源代碼中導航。n對象瀏覽器,用于查看.NET Framework 程序集和 COM 對象中可用的方法和類。25Visual Studio.NET集成開發(fā)環(huán)境26屬性窗口 屬性描述控件選擇事件圖標屬性圖標屬性名屬性值按字母排序271.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。nC#語言使用類來組織和包裝代碼,所有可執(zhí)行代碼都必須包含在類

10、中。nusing指令用于聲明程序中使用的系統(tǒng)類所在的命名空間。 如:Console類包含在System命名空間中。/聲明系統(tǒng)命名空間using System;using System.Collections.Generic;using System.Linq;using System.Text;/用戶自定義命名空間namespace Exam_1_1 / / 程序開始類:Program / class Program / / 應用程序的主入口方法: Main / / static void Main(string args) Console.WriteLine(請輸入你的名字:); strin

11、g username = Console.ReadLine(); Console.WriteLine(歡迎0進入C#世界!, username); 281.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。n注釋方式:n單行注釋 / 注釋內容n多行注釋 /* 注釋第1行注釋第n行 */n文檔注釋 / 文檔注釋 即XML注釋,將文檔注釋的內容轉為XML文檔保存。/聲明系統(tǒng)命名空間using System;using System.Collections.Generic;using System.Linq;using System.Text;/用戶自定義命名空間namespace Exam_

12、1_1 / / 程序開始類:Program / class Program / / 應用程序的主入口方法: Main / / static void Main(string args) Console.WriteLine(請輸入你的名字:); string username = Console.ReadLine(); Console.WriteLine(歡迎0進入C#世界!, username); 291.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。nMain方法:nMain 方法是 C# 控制臺應用程序或窗口應用程序的入口點,程序控制流在該處開始和結束。nMain 在類或結構的內

13、部聲明。Main 方法必須是靜態(tài)的,且不應該是公用的(默認訪問級別是 private)但不要求所在類或結構是靜態(tài)的。nMain 的返回類型有兩種:void 或 int。nMain 方法可以包含命令行參數(shù) string ,也可以不具有這樣的形參。301.1.4 初識C#程序【例例1-1】一個簡單的控制臺程序。n控制臺輸入、輸出n使用.NET Framework中 System 命名空間中的Console類提供的輸入輸出方法。n輸入:Console.Read(); /讀取一個字符 Console.ReadLine(); /讀取一行字符n輸出:Console.Write(); /以文本形式輸出 Co

14、nsole.WriteLine(); /以文本形式輸出并換行 若輸出若干變量值,則用 0 表示第一項,1 表示第二項,依此類推,如:int year = 1066; string battle = Battle of Hastings; Console.WriteLine(The 0 took place in 1., battle, year); 311.1.4 初識C#程序【例例1-2】一個圖形界面程序。 設計一個程序,界面上用一個文本框輸入姓名,單擊“確定”按鈕后,在文本框中顯示“歡迎XXX進入C#世界!”,運行結果如下圖所示。321.1.5 命名空間n命名空間類似于文件系統(tǒng)中的文件夾,

15、可以看作相關類的一個容器。n命名空間分為兩類:用戶定義的命名空間、系統(tǒng)定義的命名空間。n系統(tǒng)命名空間:NET Framework 本身有八十多個命名空間,每個命名空間中有上千個類。 System.Drawing:提供了GDI+基本繪圖功能; System.IO:提供數(shù)據(jù)文件讀寫等功能; System.Collections:提供了列表、隊列等集合操作n用戶定義的命名空間是在代碼中定義的命名空間。 331.1.5 命名空間namespace 命名空間名稱 用戶代碼n命名空間可以嵌套n命名空間的使用n使用using指令能夠引用給定的命名空間或創(chuàng)建命名空間的別名(using 別名)。 using 別

16、名 = 類或命名空間名;如:using System; using System.Drawing; using StatisticalData;namespace StatisticalData class FileHandling public void Load() / code to load statistical data namespace Images class FileHandling public void Load() / code to load an image file class Program static void Main() StatisticalData

17、.FileHandling data = new StatisticalData.FileHandling(); data.Load(); Images.FileHandling image = new Images.FileHandling(); image.Load(); 34命名空間命名空間類的描述類的描述System定義通常使用的數(shù)據(jù)類型和數(shù)據(jù)轉換的基本.NET類。System.Collections定義列表、隊列、位數(shù)組合字符串表。System.Data定義ADO.NET數(shù)據(jù)庫結構。System.Drawing提供對基本圖形功能的訪問。System.IO允許讀寫數(shù)據(jù)列和文件。Syst

18、em.Net提供對Windows網(wǎng)絡功能的訪問。System.Net.Sockets提供對Windows套接字的訪問。1.1.5 命名空間n系統(tǒng)定義的命名空間351.2 C#語言基礎 n1、基本編碼規(guī)則n2、數(shù)據(jù)類型n3、數(shù)據(jù)類型轉換n4、常量與變量n5、裝箱與拆箱n6、運算符361.2.1 基本編碼規(guī)則nC#語言中,標識符是以字母、下劃線(_)或開始的一個字符序列,后面可以跟字母、下劃線、數(shù)字。C#語言區(qū)分大小寫。n具有專門的意義和用途,不能當作一般的標識符使用,這些標識符稱為保留字或關鍵字。 n書寫規(guī)則書寫規(guī)則n每行語句以 ; 結尾。n空行和縮進被忽略。n多條語句可以處于同一行,之間用分號

19、分隔即可。n注釋:有3種方式。371.2.2 數(shù)據(jù)類型n數(shù)據(jù)類型分類1:可分為內置類型和構造類型。數(shù)據(jù)類型數(shù)據(jù)類型內置類型內置類型構造類型構造類型(自定義類型)(自定義類型)objectstringbyte, sbyteshort, ushortint, uintlong, ulongfloat, double, decimalboolchar數(shù)組結構struct枚舉enum類class接口interface委托delegate381.2.2 數(shù)據(jù)類型n數(shù)據(jù)類型分類2:按數(shù)據(jù)的存儲方式,可分為值類型和引用類型。數(shù)據(jù)類型數(shù)據(jù)類型值類型值類型引用類型引用類型數(shù)值類型bool, char結構枚舉st

20、ring數(shù)組類接口委托說明:說明:1、所有的數(shù)據(jù)類型是以類的形、所有的數(shù)據(jù)類型是以類的形式組織的;式組織的;2、數(shù)據(jù)類型的根基類是、數(shù)據(jù)類型的根基類是object類;類;3、定義、定義值類型變量值類型變量時,直接使時,直接使用即可;定義用即可;定義引用型變量引用型變量時,時,需先使用需先使用new分配內存,但分配內存,但string類型除外。類型除外。391.2.2 數(shù)據(jù)類型n類型的層次結構稱為通用類型系統(tǒng)CTS(Common Type System)401.2.2 數(shù)據(jù)類型n類型的層次結構稱為通用類型系統(tǒng)CTS(Common Type System)41n值類型值類型n各種值類型總是含有該類

21、型的一個值。每當把一個值賦給一個值類型時,該值實際上被拷貝了。n相比,對于引用類型,僅是引用被拷貝了,而實際的值仍然保留在原來的內存位置。nC#的值類型可以歸類如下:n 內置類型(Simple type)n 枚舉類型(Enumeration type)n 結構類型(Structure type)1.2.2 數(shù)據(jù)類型421.2.2 數(shù)據(jù)類型n值類型值類型內置類型內置類型整數(shù)整數(shù)431.2.2 數(shù)據(jù)類型n值類型值類型內置類型內置類型實數(shù)實數(shù)n值類型值類型內置類型內置類型字符型字符型nUnicode 字符是 16 位字符,用于表示世界上大多數(shù)已知的書面語言。441.2.2 數(shù)據(jù)類型n值類型值類型內置

22、類型內置類型字符型字符型n值類型值類型內置類型內置類型布爾型布爾型n布爾型只有true、false兩個值,且不對應于任何整數(shù)值。char chars = new char4;chars0 = X; / Character literal chars1 = x0058; / Hexadecimal chars2 = (char)88; / Cast from integral type chars3 = u0058; / Unicode foreach (char c in chars) Console.Write(c + ); / Output: X X X X 451.2.2 數(shù)據(jù)類型n值類

23、型值類型枚舉類型枚舉類型n默認情況下,第一個枚舉數(shù)的值為 0,后面每個枚舉數(shù)的值依次遞增 1。 enum Days Sat, Sun, Mon, Tue, Wed, Thu, Fri; n也可以更改默認值。 enum Days Sat=1, Sun, Mon, Tue, Wed, Thu, Fri; nenum和整型之間的轉換需要用顯式類型轉換來完成,即使用強制轉換。 int x = (int)Days.Sun; 或 x = Convert.ToInt32(Days.Sun); 注:Convert可以轉換字符串?!纠?-3】定義一個職稱枚舉類型,輸出類型中所有枚舉常量。461.2.2 數(shù)據(jù)類型

24、n值類型值類型結構類型結構類型n用 struct 關鍵字定義的,如: public struct PostalAddress / Fields, properties, methods and events go here. n結構與類共享大多數(shù)相同的語法。但結構是值類型,類是引用類型,且結構不支持繼承。 471.2.2 數(shù)據(jù)類型n值類型值類型結構類型結構類型【例1-4】結構與類的比較(即值類型與引用類型的比較)。public struct MyStruct public int a; public void Output() Console.WriteLine(結構成員 a = 0, a);

25、 class Program static void Main() MyStruct x; x.a = 100; x.Output(); 481.2.2 數(shù)據(jù)類型n引用類型引用類型n和值類型相比,引用類型不存儲它們所代表的實際數(shù)據(jù),但它們存儲實際數(shù)據(jù)的地址(引用)。n引用類型包括:object、string、數(shù)組、類、接口、委托等。其內容在后續(xù)的章節(jié)中介紹。nobject類是 .net 類型層次結構的根,所有類型(用戶定義類型、引用類型和值類型)均是直接或間接從 object 繼承的。因為它是所有類型的基類,所以可把任何類型的值賦給它,例如: object theObj = 123; 即:裝箱

26、(值類型 Object類型) 拆箱(Object類型 值類型)491.2.3 數(shù)據(jù)類型轉換n分為:隱式轉換和顯式轉換隱式轉換和顯式轉換n隱式轉換:系統(tǒng)默認,不需要加以說明。需要注意的是:n字符類型:可以隱式轉換為整型或浮點型,但不存在其他類型到字符類型的隱式轉換。n數(shù)值類型:低精度類型可以隱式轉換為高精度類型,反之會出現(xiàn)異常。n在浮點型和decimal類型之間不存在隱式轉換,因此,這兩種類型之間必須使用顯示轉換。 ushort destinationVar;char sourceVar = a;destinationVar = sourceVar;Console.WriteLine(sourc

27、eVar val: +sourceVar);Console.WriteLine(destinationVar val:+destinationVar);501.2.3 數(shù)據(jù)類型轉換n隱式轉換隱式轉換511.2.3 數(shù)據(jù)類型轉換n顯式轉換顯式轉換:即強制轉換,需要指定要轉換到的類型。n方法一:(類型名稱)變量名稱;注:如不強制轉換則程序出現(xiàn)編譯錯誤。 double x = 1234.7;int a; / Cast double to int. a = (int)x; System.Console.WriteLine(a); 521.2.3 數(shù)據(jù)類型轉換n顯式轉換顯式轉換n方法一:(類型名稱)變量

28、名稱;int sourceVar=7;byte targetVar;targetVar = (byte)sourceVar;Console.WriteLine(32位有符號整數(shù): 0, sourceVar);Console.WriteLine(8位無符號整數(shù): 0, targetVar);531.2.3 數(shù)據(jù)類型轉換n顯式轉換顯式轉換n方法一:(類型名稱)變量名稱;n此時出現(xiàn)溢出現(xiàn)象,可采用checked(expression)檢查。int sourceVar=281;byte targetVar;targetVar = (byte)sourceVar;Console.WriteLine(32

29、位有符號整數(shù): 0, sourceVar);Console.WriteLine(8位無符號整數(shù): 0, targetVar);541.2.3 數(shù)據(jù)類型轉換n顯式轉換顯式轉換n方法二:使用System.Convert類,可以檢查溢出。55【例1-5】float a = 15.5f;int b = (int)a; /截斷double c = a; int d = Convert.ToInt32(a); /四舍五入Console.WriteLine(“轉換類型前變量 a 的值為: 0, a);Console.WriteLine(顯式轉換為 int 類型后的值為: 0, b);Console.Writ

30、eLine(隱式轉換為 double 類型后的值為: 0, c);Console.WriteLine(使用Convert類ToInt32方法轉換int類型后的值為: 0, d);char e = a;byte f = Convert.ToByte(e); Console.WriteLine(字符a使用Convert類ToByte方法轉換為byte類型的值為: 0, f);string value=“124”; /Convert可以轉換字符串為數(shù)值型Console.WriteLine(字符串124使用Convert類ToInt32方法轉換為int類型的值為:0, Convert.ToInt32(

31、value);1.2.3 數(shù)據(jù)類型轉換561.2.4 常量和變量n符號常量n變量命名規(guī)范nHungarian notation(匈牙利命名法):在組成變量的單詞前,加上小寫字母、下劃線作為前綴,以識別變量的作用域、類型等。 如:m_strLastName(表示類的成員變量) strLastName(表示函數(shù)內的局部變量)ncamelCase(駱駝命名法):組成變量的單詞中,除第一個單詞首字母小寫外,其余單詞首字母大寫。 如:lastNamenPascalCase(帕斯卡命名法):組成變量的每個單詞的首字母大寫。 如:LastNamenMicrosoft建議:簡單變量使用camelCase ,函

32、數(shù)等使用PascalCase。const int speedLimit = 55;const double pi = 3.14159265358979323846264338327950; 571.2.5 裝箱與拆箱n裝箱(boxing):裝箱是值類型到 object 類型或到某一引用類型的隱式轉換。對值類型進行裝箱會在堆棧中創(chuàng)建對象變量,并將該值復制到對象變量指向的堆中。 int i = 123; object o = (object) i; / boxing 581.2.5 裝箱與拆箱n裝箱(boxing):裝箱是值類型到 object 類型或到某一引用類型的隱式轉換。對值類型進行裝箱會在

33、堆棧中創(chuàng)建對象變量,并將該值復制到對象變量指向的堆中。 class TestBoxing static void Main() int i = 123; object o = i; / Implicit boxing i = 456; / Change the contents of i System.Console.WriteLine(The value-type value = 0, i); System.Console.WriteLine(The object-type value = 0, o); /* Output: The value-type value = 456 The ob

34、ject-type value = 123 */ 591.2.5 裝箱與拆箱n拆箱(unboxing):是從 object 類型或某一引用類型到值類型的顯式轉換。操作包括:n檢查對象變量,以確保其指向的裝箱值是需轉換的值類型.n將該值從對象變量中復制到值類型變量中。int i = 123; / a value type object o = i; / boxing int j = (int)o; / unboxing 601.2.6 運算符n根據(jù)運算類型,常用運算符可以分為以下幾類:n算術運算符n賦值運算符n關系運算符n邏輯運算符n位運算符611.2.6 運算符n算術運算符621.2.6 運算

35、符n賦值、復合賦值運算符631.2.6 運算符n關系運算符641.2.6 運算符n邏輯運算符651.2.6 運算符n位運算符(二進制運算)【例1-6】運算符說明& 按位與:對應位均為1時,則結果為1;否則為0| 按位或:對應位只要有1,則結果為1;否則為0 按位異或:對應位值不同時,則結果為1;否則為0int x = 4, y = 5, z;z = x & y;z = x | y;z = x y;661.2.6 運算符n運算符優(yōu)先級671.3 控制語句n分支結構nifelse語句nswitch語句n循環(huán)結構nwhile語句ndowhile語句nfor語句nforeach語句68

36、1.3.1 分支結構nifelse語句if (result = true) Console.WriteLine(The variable is set to true.); else Console.WriteLine(The variable is set to false.); if (x 10) if (y 20) Console.Write(Statement_1); else Console.Write(Statement_2); if (Condition_1) / Statement_1; else if (Condition_2) / Statement_2; else if

37、(Condition_3) / Statement_3; else / Statement_n; 691.3.1 分支結構nswitch語句int caseSwitch = 1;/輸入caseSwitch switch (caseSwitch) case 1: Console.WriteLine(Case 1); break; case 2: Console.WriteLine(Case 2); break; default: Console.WriteLine(Default case); break; int n; /輸入n值switch(n) case 1: case 2: case 3

38、: Console.WriteLine(Its 1, 2, or 3.); break; default: Console.WriteLine(Not sure what it is.); break; 701.3.2 循環(huán)結構nwhile語句ndowhile語句int n = 1; while (n 6) Console.WriteLine(Current value of n is 0, n); n+; int x = 0; do Console.WriteLine(x); x+; while (x 5); 711.3.2 循環(huán)結構nfor語句for(初始值; 循環(huán)條件; 更新值) 循環(huán)體

39、 for (int i = 1; i 10; i+) for (int j = 1; j = i; j+) Console.Write(0*1=2, -2 , i, j, i * j); /-2是占位符 Console.WriteLine();721.3.2 循環(huán)結構nforeach語句n用于集合類元素的枚舉,如數(shù)組、字符串、列表、隊列、堆棧等。 foreach(數(shù)據(jù)類型 變量 in 集合表達式) 循環(huán)體; n主要用于元素值的讀,不建議用于元素值的更改以避免產(chǎn)生不可預知的副作用。731.3.2 循環(huán)結構nforeach語句int fibarray = new int 0, 1, 2, 3, 5

40、, 8, 13 ;foreach (int i in fibarray) System.Console.WriteLine(i);string S = 歡迎光臨青島;foreach (char a in S) System.Console.WriteLine(a);for (int i = 0; i S.Length; i+) System.Console.WriteLine(Si);741.3.2 循環(huán)結構n循環(huán)終止語句nbreak語句 用于終止所在循環(huán)或所在的 switch 語句。ncontinue語句 用于終止本次循環(huán),開始下一次循環(huán)。751.4 數(shù)組n按照數(shù)組的維數(shù),數(shù)組可分為三類:n

41、一維數(shù)組n多維數(shù)組n交錯數(shù)組761.4.1 一維數(shù)組n聲明方法: 數(shù)據(jù)類型 數(shù)組名;注:數(shù)組為引用類型,在使用前必須先分配空間。n可以在聲明數(shù)組時進行初始化: 或初始化的簡化形式:int array = new int5;string stringArray = new string6; int array = new int 1, 3, 5, 7, 9 ;string weekDays = new string Sun, Mon, Tue, Wed, Thu, Fri, Sat ; int array = 1, 3, 5, 7, 9 ; string weekDays = Sun, Mon,

42、 Tue, Wed, Thu, Fri, Sat ; 771.4.1 一維數(shù)組n可以在聲明數(shù)組變量時不為其分配空間,當在程序中將數(shù)組分配給此變量時必須使用 new 運算符。int array;string weekDays;array = new int 1, 3, 5, 7, 9 ; / OK/array2 = 1, 3, 5, 7, 9; / Error weekDays = new string Sun, Mon, Tue, Wed, Thu, Fri, Sat ; 781.4.1 一維數(shù)組n數(shù)組元素的遍歷nfor形式for (int i=0; i數(shù)組名.length; i+) / ca

43、n use 數(shù)組名i for each elementnforeach形式foreach (類型 變量 in 數(shù)組名) / can use 變量 for each element791.4.2 多維數(shù)組n聲明:n聲明時初始化:n如果聲明一個數(shù)組變量時不為其分配空間,必須使用 new 運算符將一個數(shù)組分配給此變量: int, array = new int4, 2;int, , array1 = new int2, 2, 3; int, array2D = new int, 1, 2 , 3, 4 , 5, 6 , 7, 8 ;int, , array3D = new int, 1, 2, 3

44、, 4, 5, 6 , 7, 8, 9 , 10, 11, 12 ; int, array5; array5 = new int, 1, 2 , 3, 4 , 5, 6 , 7, 8 ; / OK /array5 = 1,2, 3,4, 5,6, 7,8; / Error 801.4.2 多維數(shù)組nArray類的常用方法、屬性n使用方法:數(shù)組名.方法名()、數(shù)組名.屬性名811.4.3 交錯數(shù)組n交錯數(shù)組:也稱為“數(shù)組的數(shù)組”,交錯數(shù)組是一維數(shù)組,且每個元素自身又是一個一維數(shù)組。作為元素的數(shù)組無需為相同的大小。n聲明 或n還需給各元素分配空間 或同時賦初值int jaggedArray = n

45、ew int3; int jaggedArray;jagged = new int3; jaggedArray0 = new int5; jaggedArray1 = new int4; jaggedArray2 = new int2; jaggedArray0 = new int 1, 3, 5, 7, 9 ;jaggedArray1 = new int 0, 2, 4, 6 ; jaggedArray2 = new int 11, 22 ; int jaggedArray = new int34; 821.4.3 交錯數(shù)組n聲明時也可賦初值 或簡化形式int jaggedArray = n

46、ew int new int 1,3,5,7,9, new int 0,2,4,6, new int 11,22 ; int jaggedArray = new int 1,3,5,7,9, new int 0,2,4,6, new int 11,22 ; int jaggedArray = 1,3,5,7,9, 0,2,4,6, 11,22 ; 831.4.3 交錯數(shù)組/ Declare the array of two elements: int arr = new int2; / Initialize the elements: arr0 = new int5 1, 3, 5, 7, 9

47、 ; arr1 = new int4 2, 4, 6, 8 ; / Display the array elements: for (int i = 0; i arr.Length; i+) System.Console.Write(Element(0): , i); for (int j = 0; j arri.Length; j+) System.Console.Write( 0 , arrij); System.Console.WriteLine(); 841.5 異常處理n程序存在兩類錯誤:n編譯錯誤(build error)n錯誤列表窗口n調試工具(Debug)n運行錯誤(runtime error):稱為異常(exception)n編譯時無法預期的錯誤,如數(shù)組越界、被 0 除等。nTryCatchFinally結構851.5 異常處理n調試方法n設置斷點(Break Point)、逐句跟蹤、值跟蹤(局部變量窗口、監(jiān)視窗口)n“局部變量”窗口:顯示當前函數(shù)的局部變量n“監(jiān)視”窗口:自定義要監(jiān)視的內容n信息輸出n控制臺輸出:Console.Writeline();nDebug的“輸出”窗口:System.Diagnostics.Debug.Writeline();nMessageBox.Show();861.5 異常處理nTryCatchFinally結構n將可

溫馨提示

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

評論

0/150

提交評論