Visual C#.NET語法基礎_第1頁
Visual C#.NET語法基礎_第2頁
Visual C#.NET語法基礎_第3頁
Visual C#.NET語法基礎_第4頁
Visual C#.NET語法基礎_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、LOGOVisual C#.NET程序設計程序設計 Visual C#.NET 語語法基礎法基礎 C#程序結(jié)構C#程序支持控制臺應用程序、Windows應用程序和Web應用程序,其中控制臺應用程序是字符界面的,其余兩類應用程序是圖形界面。程序的組成要素程序的組成要素1標識符 標識符(identifier)是C#程序員為類型、方法、變量、常量等所定義的名字。 標識符以字母、下劃線(_)等Unicode字符開頭,但是不能以數(shù)字開頭,不能包含空格。關鍵字不可以用作普通標識符,但可以用前綴來避免這種沖突。 C#中,標識符區(qū)分大小寫。程序的組成要素程序的組成要素2關鍵字 關鍵字(keyword)是C#程

2、序語言保留作為專用的有特定意義的字符串,不能作為通常的標識符來使用。 關鍵字也稱為保留字。程序的組成要素程序的組成要素3語句 語句是應用程序中執(zhí)行操作的一條命令。 C#代碼由一系列語句組成,每條語句都必須以分號結(jié)束。可以在一行中書寫多條語句,也可以將一條語句書寫在多行上。(怎樣將一條語句分多行來寫?) C#是一個塊結(jié)構的語言,用一對花括號(“”和“”)來界定語句塊。提示:提示:語句的縮進是一種良好的編程習慣。 程序的組成要素程序的組成要素4注釋注釋是一段解釋性文本,是對代碼的描述和說明。通常在處理比較長的代碼段或者處理關鍵的業(yè)務邏輯時,將注釋添加到代碼中。C#添加注釋的方式有三種:(1)行注釋

3、:使用行注釋標識符“/”,表示該標識符后的“一行”為注釋部分。(2)塊注釋:塊注釋分別以“/ /* *”和“* */ /”為開始和結(jié)束標識符,在此中間的內(nèi)容,均為注釋的部分。(3)文檔注釋:在C#中,還可以用“/”符號來開頭。提取注釋后面的文本可用于創(chuàng)建文檔說明書。(4)注釋選中行或取消注釋選中行:通過菜單“編輯|高級”中的相應命令或通過“文本編輯器”工具欄中的相應工具按鈕,可以把選中的內(nèi)容注釋掉或取消注釋。程序的組成要素程序的組成要素5命名空間 命名空間用來限定名稱的解析和使用范圍,類似于文件夾,用來組織和管理代碼。 命名空間有兩種:系統(tǒng)命名空間和用戶自定義命名空間。 系統(tǒng)命名空間是一個邏輯

4、的命名系統(tǒng),用來組織龐大的系統(tǒng)類資源,讓開發(fā)者使用起來結(jié)構清晰、層次分明、使用簡單。 自定義命名空間可以解決應用程序中可能出現(xiàn)的名稱沖突。程序的組成要素程序的組成要素 (1)定義命名空間。 在C#中定義命名空間的語法格式如下: namespace SpaceName 上述格式中,namespace為聲明命名空間的關鍵字,SpaceName為命名空間的名稱。 在花括號中間的內(nèi)容都屬于名稱為SpaceName的命名空間的范圍,其中可以包含類、結(jié)構、枚舉、委托和接口等可在程序中使用的類型。程序的組成要素程序的組成要素 (2)嵌套命名空間。也可以在命名空間中再定義其他命名空間。 例如:namespac

5、e Wrox namespace ProCSharp namespace Basics class ClassExample / Code for the class here. 每個類名的全稱都由它所在命名空間的名稱與類名組成,這些名稱用“”隔開,首先是最外層的命名空間,最后是它自己的短名。 比如類ClassExample的全名是: Wrox.ProCSharp.Basics.ClassExample程序的組成要素程序的組成要素 (3)using語句。 在文件的頂部列出類所在的命名空間,前面加上using關鍵字,在文件的其他地方,就可以使用類型的短名稱來引用命名空間中的類型,達到簡化層次的目

6、的。 所有的C#源代碼都以語句“using System;”開頭,因為Microsoft提供的許多有用的類都包含在System命名空間中。程序的組成要素程序的組成要素6類的定義和類的成員 每一個C#應用程序都必須借助于.NET Framework類庫實現(xiàn),因此必須使用using關鍵字把.NET Framework類庫相應的命名空間引入到應用程序的項目中來。例如,設計Windows應用程序時需要引用命名空間System.Windows.Forms。 C#源代碼必須存放到類中,一個C#應用程序至少要包括一個自定義類。自定義類使用關鍵字class聲明,其名字是一個標識符。 類的成員包括屬性、方法和事

7、件,主要由方法構成。例如控制臺應用程序或Windows應用程序必須包含Main方法,Main方法是應用程序的入口。程序運行時,從Main方法的第一條語句開始執(zhí)行,直到執(zhí)行完最后一條語句為止。程序的組成要素程序的組成要素7C#程序中的方法 C#應用程序中的方法一般包括方法頭部和方法體。 方法頭部主要包括返回值類型、方法名、形式參數(shù)類型及名稱。 方法體使用一對“”括起來,通常包括聲明部分和執(zhí)行部分?;緮?shù)據(jù)類型基本數(shù)據(jù)類型數(shù)值類型布爾類型和對象類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型 數(shù)值類型 數(shù)值類型可以分為整數(shù)類型和實數(shù)類型。1 1整數(shù)類型整數(shù)類型 C#中支持8種整數(shù)類型:sbyte、byte、short

8、、ushort、int、uint、long、ulong。這8種類型通過占用存儲空間大小及是否有符號來存儲不同極值范圍的數(shù)據(jù)。根據(jù)實際應用的需要,選擇不同的整數(shù)類型,有時很有必要。數(shù)值類型數(shù)值類型2 2實數(shù)類型實數(shù)類型 實數(shù)類型包括浮點型和小數(shù)型(decimal),浮點型又包括單精度浮點型(float)和雙精度浮點型(double)。 在精度要求不是很高的情況下,盡量使用單精度類型(占用4個字節(jié))。如果精度要求較高的情況,則可以使用雙精度類型(占用8個字節(jié))。 浮點型表示小數(shù)的最高精度只能夠達到16位,需要更高精度的,可使用C#提供的小數(shù)型(占用12個字節(jié))。字符類型字符類型 字符類型包括字符型

9、(char)和字符串型(string)。 字符包括數(shù)字字符、英文字母、表達式符號等,C#提供的字符類型按照國際上公認的標準,采用Unicode字符集。 字符型是指單個字符,一個Unicode的標準字符長度為16位,占用2個字節(jié)。char是類System.Char的別名。 字符串型是指多個字符,其占用字節(jié)根據(jù)字符數(shù)量而定(允許不包含字符的空字符串)。string是類System.String的別名。變量與常量變量與常量 在程序處理數(shù)據(jù)的過程中,常量和變量用來標識數(shù)據(jù)。變量 常量 類型轉(zhuǎn)換 在程序運行過程中,其值可以改變的量稱為變量。 在C#中,每一個變量都必須具有變量名、存儲空間和取值等屬性。

10、1 1變量的聲明變量的聲明 要使用變量,就必須聲明它們,即給變量指定一個名稱和一種類型。 聲明了變量后,編譯器才會申請一定大小的存儲空間,用來存放變量的值。1變量的聲明 一個語句可以定義多個相同類型的變量,變量間用逗號分隔,標識符和變量類型之間至少要有一個空格。定義變量的語句以分號結(jié)束。例如: int a,b,c; float m,n; char ch1,ch2;2 2變量的賦值變量的賦值 在C#中,變量必須賦值后才能引用。為變量賦值,一般使用賦值運算符“=”。例如:char ch1,ch2;ch1 = O; ch2 = K;int a,b,c;a = b = c = 0;3 3變量的初始化變

11、量的初始化變量的初始化就是在定義變量的同時給變量賦初值,其一般形式為: 數(shù)據(jù)類型 變量名1 = 初值1 ,變量名2 = 初值2,. ;例如:float f11.25, f23.6, f3; 在程序運行過程中,其值不能被改變的量稱為常量。常量類似于數(shù)學中的常數(shù)。常量可分為直接常量和符號常量兩種形式。1 1直接常量直接常量所謂直接常量,就是在程序中直接給出的數(shù)據(jù)值。在C#中,直接常量包括整型常量、浮點型常量、小數(shù)型常量、字符型常量、字符串常量和布爾型常量。 1 1直接常量直接常量 (1)整型常量。整型常量分為有符號整型常量、無符號整型常量和長整型常量 有符號整型常量直接書寫,無符號整型常量在書寫時

12、添加u或U標志,長整型常量在書寫時添加l或L標記。 例如,3、3U、3L。 (2)浮點型常量。浮點型常量分為單精度浮點型常量和雙精度浮點型常量。 單精度浮點型常量在書寫時添加f或F標記,雙精度浮點型常量添加d或D標記。 例如,7f、7d。 需要注意的是,以小數(shù)形式直接書寫而未加標記時,系統(tǒng)將自動解釋成雙精度浮點型常量。例如,9.0即為雙精度浮點型常量。 (3)小數(shù)型常量。在C#中,小數(shù)型常量的后面必須添加m或M標記,否則就會被解釋成標準的浮點型數(shù)據(jù)。 例如,5.0M。 1 1直接常量直接常量 (4)字符型常量。字符型常量是一個標準的Unicode字符,使用兩個單引號來標記。例如,5、d、昱 、

13、#都是標準的字符型常量。 C#還允許使用一種特殊形式的字符型常量,即以反斜杠“”開頭,后面跟字符的字符序列,這種字符型常量被稱為轉(zhuǎn)義字符常量。該形式的常量可以表示控制字符或不可見字符,當然也可以表示可見字符。例如,n表示換行符,而x41則表示字符A。 (5)字符串常量。字符串常量表示若干個Unicode字符組成的字符序列,使用兩個雙引號來標記。例如,“5”、“abc”、“清華大學”都是字符串。 (6)布爾型常量。布爾型常量只有兩個:一個是true ,表示邏輯真;另一個是false,表示邏輯假。 2 2符號常量符號常量 符號常量使用const關鍵字定義,格式為: const 類型名稱 常量名 =

14、 常量表達式; “常量表達式”不能包含變量、函數(shù)等值會發(fā)生變化的內(nèi)容,可以包含其他已定義常量。 如果在程序中非常頻繁地使用某一常量,可以將其定義為符號常量。 例如: const double PI = 3.14159; 【例例1 1】 變量的定義和使用。變量的定義和使用。 【例例2 2】 不同格式的常量類型測試。不同格式的常量類型測試。 數(shù)據(jù)類型的轉(zhuǎn)換方式有兩種:隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。1 1隱式轉(zhuǎn)換隱式轉(zhuǎn)換 隱式轉(zhuǎn)換一般發(fā)生在數(shù)據(jù)進行混合運算的情況下,是由編譯系統(tǒng)自動進行的,不需要加以聲明。在該過程中,編譯器無需對轉(zhuǎn)換進行詳細檢查就能夠安全地執(zhí)行轉(zhuǎn)換。隱式轉(zhuǎn)換一般不會失敗、不會出現(xiàn)致命隱患或造成

15、信息丟失。例如: short s = 1; int i = s; 需要注意的是,隱式轉(zhuǎn)換無法完成由精度高的數(shù)據(jù)類型向精度低的類型轉(zhuǎn)換。例如: int i = 1; short s = i; /錯誤,如果必須進行轉(zhuǎn)換,就應該使用顯式類型轉(zhuǎn)換 1 1隱式轉(zhuǎn)換隱式轉(zhuǎn)換 隱式轉(zhuǎn)換需要遵循如下規(guī)則: (1)參加運算的數(shù)據(jù)類型不一致,先轉(zhuǎn)換成同一類型,再進行計算。不同類型數(shù)據(jù)進行轉(zhuǎn)換時,按照數(shù)據(jù)長度增加的方向進行,以保證數(shù)據(jù)精度不降低。 (2)所有浮點型數(shù)據(jù)都是以雙精度型進行的。 (3)byte和short型數(shù)據(jù)參與運算時,必須先轉(zhuǎn)換成int 型數(shù)據(jù)。 (4)char類型可以隱式轉(zhuǎn)換成ushort、int

16、、uint、long、float、double或decimal類型,但其他類型不能隱式轉(zhuǎn)換成char類型。 2 2顯式轉(zhuǎn)換顯式轉(zhuǎn)換 顯式類型轉(zhuǎn)換,又稱為強制類型轉(zhuǎn)換,該方式需要用戶明確指定轉(zhuǎn)換的目標類型,該類型轉(zhuǎn)換的一般形式為: (類型說明符)(需要轉(zhuǎn)換的表達式) 例如: short s = 7; int i = (int)s; /將s的值顯式轉(zhuǎn)化為int類型,并賦值于int類型變量i 把任何編譯器允許的隱式類型轉(zhuǎn)換寫成顯式轉(zhuǎn)換都是合法的。顯式類型轉(zhuǎn)換并不一定總是成功,且轉(zhuǎn)換過程中會出現(xiàn)數(shù)據(jù)丟失。 2 2顯式轉(zhuǎn)換顯式轉(zhuǎn)換 需要注意的是,使用顯式轉(zhuǎn)換時,如果要轉(zhuǎn)換的數(shù)據(jù)不是單個變量,需要加圓括號

17、。 轉(zhuǎn)換過程中,僅僅是為本次運算的需要對變量的長度進行臨時性轉(zhuǎn)換,而不是改變變量定義的類型和值。例如: float a = 3.5f ; int i = (int)(a+5.1) ; /把表達式a+5.1的結(jié)果轉(zhuǎn)換為int型,但 a的類型為float,值仍然是3.5f int i=(int)a+5.1; /這種寫法與上面寫法含義相同嗎?編譯對嗎? 3. 3. 使用方法進行數(shù)據(jù)類型的轉(zhuǎn)換使用方法進行數(shù)據(jù)類型的轉(zhuǎn)換 (1)Parse方法 Parse方法可以將特定格式的字符串轉(zhuǎn)換為數(shù)值,其使用格式為: 數(shù)值類型名稱.Parse(字符串型表達式) 例如: int i = int.Parse(100);

18、 /字符串符合整型格式,轉(zhuǎn)換成功 int j = int.Parse(“100.0”);/字符串不符合整型格式,出錯 (2)Convert類的方法 Convert類提供了將數(shù)字字符串轉(zhuǎn)化為的數(shù)值的方法,如ToBoolean、ToByte、ToInt32、ToSingle等方法; Convert類還提供了將其他數(shù)據(jù)類型轉(zhuǎn)換為字符串的ToString方法,提供了將整型的ASCII碼值轉(zhuǎn)換為對應字符的ToChar方法。例如: string s = 97; int n = Convert.ToInt32(s); / n = 97 char c = Convert.ToChar(n); / ASCII碼

19、為97的字符是a,即c = a (3)ToString方法 ToString方法可將其他數(shù)據(jù)類型的變量值轉(zhuǎn)換為字符串類型,其使用格式為: 變量名稱.ToString( ) 其中,“變量名稱”也可以是某個方法的調(diào)用。例如: int n = 97; string s = n.ToString( ); / s = “97” string t = Convert.ToChar(n).ToString(); / t = “a” 【例】 數(shù)值字符串與數(shù)值之間的轉(zhuǎn)換。 運算符與表達式運算符與表達式 運算符與表達式類型 運算符用于對操作數(shù)進行特定的運算。 表達式則是運算符和相應的操作數(shù)按照一定的規(guī)則連接而成的

20、式子。 常見的運算符有算術運算符、字符串運算符、關系運算符和邏輯運算符等。 相應的,表達式也可分為算術表達式、字符串表達式、關系表達式和邏輯表達式等。 1 1算術運算符和算術表達式算術運算符和算術表達式 算術運算符有一元運算符與二元運算符。一元運算符包括:+(取正)、-(取負)、+(自增)、-(自減)。二元運算符包括:+(加)、-(減)、*(乘)、/(除)、%(求余)。 “+”與“-”只能用于變量。包括前置運算和后置運算。 %(求余)運算符是以除法的余數(shù)作為運算結(jié)果,求余運算也叫取模。例如: int x=7/2+5%3-1; / x的值為4注意:取模運算的結(jié)果余數(shù)的符號總是和被除數(shù)保持一致。

21、2 2字符串運算符與字符串表達式字符串運算符與字符串表達式 字符串運算符只有一個,即“+”運算符,表示將兩個字符串連接起來。例如: string s1 = abc + 123; / s1的值為“abc123” “+”運算符還可以將字符串型數(shù)據(jù)與一個或多個字符型數(shù)據(jù)連接在一起,例如: string s2 = Hello + 你 + 好; / s2的值為“Hello你好” 3 3關系運算符與關系表達式關系運算符與關系表達式 關系運算又叫比較運算,實際上是邏輯運算的一種,關系表達式的返回值總是布爾值,要么是true,要么是false。 關系運算符用于對兩個操作數(shù)進行比較,以判斷兩個操作數(shù)之間的關系。

22、 C#中定義的比較操作符有:= (等于)、!=(不等于)、(大于)、=(大于或等于)。 例如,設置變量i=1、j=2,則關系表達式i != j的結(jié)果為true。 4 4邏輯運算符與邏輯表達式邏輯運算符與邏輯表達式 C#語言提供了4類邏輯運算符:&(條件與)或&(邏輯與)、|(條件或)或|(邏輯或)、!(邏輯非)和(邏輯異或)。其中,&、&、|、| 和 都是二元操作符,而!為一元操作符。它們的操作數(shù)都是布爾類型的值或表達式。 &或&表示對兩個操作數(shù)的邏輯與操作,其區(qū)別在于:利用“&”計算時,當?shù)?個操作數(shù)為false時,不再計算第2個操作數(shù)的值;而利用“&”計算時,則還要計算第2個操作數(shù)的值。

23、| 或 | 表示對兩個操作數(shù)的邏輯或操作,其區(qū)別在于:利用“|”計算時,當?shù)?個操作數(shù)為true時,不再計算第2個操作數(shù)的值。而利用“|”計算時,則還要計算第2個操作數(shù)的值。 4 4邏輯運算符與邏輯表達式邏輯運算符與邏輯表達式 !表示對某個布爾型操作數(shù)的值求反,即當操作數(shù)為false時,運算結(jié)果為true。 表示對兩個布爾型操作數(shù)進行異或運算,當兩個操作數(shù)不一致時,其結(jié)果為true,否則為false。 提示:提示:在C#中,“&”、“|”、“”三個運算符可用于將兩個整型數(shù)以二進制方式進行按位與、按位或、按位異或運算;“ ” 運算符可以進行按位取反運算,“”分別用于左移位和右移位。 5 5其他運

24、算符與表達式其他運算符與表達式 (1)typeof運算符。 typeof操作符用于獲取類型的System.Type對象。具體使用方法,如下: Console.WriteLine(typeof(int); /輸出System.Int32 Console.WriteLine(typeof(System.Int32); /輸出System.Int32 Console.WriteLine(typeof(float); /輸出System.Single Console.WriteLine(typeof(double); /輸出System.Double 在C#中,標識一個整型變量時,使用int和Syst

25、em.Int32是同一個效果,typeof操作符就是將C#中的數(shù)據(jù)類型轉(zhuǎn)化為.NET框架中的類型。 5 5其他運算符與表達式其他運算符與表達式 (2)new運算符。 new操作符用于創(chuàng)建一個新的類型實例,通常用于創(chuàng)建一個類的實例。例如:Form frm = new Form(); (3)條件操作符。 條件操作符“?:?:”,為三元操作符。對條件表達式 b? x: y,先計算條件b,然后進行判斷,如果b的值為true,計算 x的值,運算結(jié)果為x的值;否則,計算y,運算結(jié)果為y的值。三元操作符絕不會既計算x又計算y。 條件操作符是從右至左結(jié)合的。 如表達式 a? b: c? d: e 將按 a?

26、b: (c? d: e)形式執(zhí)行。 運算符的優(yōu)先級,是指當一個表達式中包含多種類型的運算符時,先進行哪種運算,這關系到表達式的最終運算結(jié)果。 見表所示。引用類型引用類型 C#的引用類型包括類、接口、委托、數(shù)組和字符串等。 類是C#面向?qū)ο蟪绦蛟O計中最重要的組成部分,是最基本的編程單位,它由若干個數(shù)據(jù)成員、方法成員等組成。C#中的類需要使用class關鍵字來進行表示和聲明,一個完整的類的定義示例如下:class Student int no; string name; char sex; int score; public string Answer() string result = 該考生信

27、息如下:; result =result + n學號: + no; result =result + n姓名: + name; return result; 接口是一種特殊的數(shù)據(jù)類型,接口與類的關系是:接口負責聲明類的標準行為,而類負責實現(xiàn)這些行為。使用接口來設計程序的最大好處是實現(xiàn)了軟件設計的規(guī)范化和標準化。 在C#中,接口類型使用interface進行標識。一個完整的接口示例如下:interface IStudent /聲明接口string Answer(); 注意,方法中不能夠包含任何語句。 委托(delegate)相當于C+中指向函數(shù)的指針,但與C+的指針不同,委托完全是面向?qū)ο蟮?,?/p>

28、把一個對象實例和方法都進行封裝,所以委托是安全的。 C#使用delegate來標記一個委托,其一般形式如下: delegate 返回值類型 委托名稱(方法參數(shù)列表) 一個完整的委托示例如下: delegate void MyDelegate(); /聲明委托 其中,MyDelegate是委托的名稱,void表示該委托所指向的方法無返回結(jié)果,圓括號中沒有方法參數(shù)列表,表示該委托指向的方法不需要參數(shù)。 【例】 接口、類和委托的簡單應用。 數(shù)組是指同類數(shù)據(jù)組成的集合,它是數(shù)據(jù)最常用的存儲方式之一。數(shù)組中包含的變量稱為數(shù)組的元素,數(shù)組元素可以是包括數(shù)組類型在內(nèi)的任何類型。 數(shù)組元素的個數(shù)稱為數(shù)組的長度

29、,數(shù)組長度為0表示該數(shù)組是空數(shù)組。數(shù)組元素沒有名稱(該說法值得商榷),只能通過索引(或稱為下標)來訪問。數(shù)組索引從0開始計數(shù),具有n個元素的數(shù)組索引范圍是0n-1。 C#支持一維和多維數(shù)組,一維數(shù)組只需一個索引就可以確定元素的位置,多維數(shù)組則需要多個索引才能確定元素的位置。 1 1數(shù)組的聲明數(shù)組的聲明 C#中的數(shù)組實際上是一個對象,可以使用new運算符來創(chuàng)建,一維數(shù)組聲明的一般格式如下: 數(shù)組類型 數(shù)組名 = new 數(shù)組類型數(shù)組長度; 例如,聲明一個具有10個整型元素的一維數(shù)組num1: int num1 = new int10; 多維數(shù)組的定義和一維數(shù)組格式差不多,區(qū)別只是在不同的維數(shù)處理

30、上。多維數(shù)組的定義格式為: 數(shù)組類型逗號列表 數(shù)組名 = new 數(shù)組類型數(shù)組長度列表; “逗號列表”和“數(shù)組長度列表”表示的列數(shù)要求一致。例如,聲明一個具有543整型三維數(shù)組numbers,如下: int, numbers=new int 5,4,3 2 2數(shù)組的初始化數(shù)組的初始化 C#中也允許在定義數(shù)組時對數(shù)組元素進行初始化,數(shù)組初始化的形式如下: 數(shù)組類型 數(shù)組名 = new 數(shù)組類型數(shù)組長度數(shù)組元素初始化列表; 例如: string arrLanguages=new string3 C, C+, C# ; 如果數(shù)組采用進行初始化的定義后,也可以不再指出數(shù)組的大小。系統(tǒng)會自動把大括號里元

31、素的個數(shù)作為數(shù)組的長度。 多維數(shù)組的初始化方式與一維數(shù)組相似,例如: string, arrLangs=new string2, 3 C, C+, C# , Java, VB, Delphi ; 3 3數(shù)組的使用數(shù)組的使用 每一個數(shù)組元素就相當于一個變量,可以在程序中對數(shù)組元素進行輸入、輸出和賦值等操作。 在C#中,通過指定索引方式訪問特定的數(shù)組元素,即通過數(shù)組元素的索引去存取某個數(shù)組元素。例如:int i1= IntA2; / 將數(shù)組元素IntA 2的值賦給變量i1;IntA3 = i1+1; / 將表達式i1+1的值賦給數(shù)組元素IntA3; 3 3數(shù)組的使用數(shù)組的使用 對于數(shù)組元素的訪問,

32、最常用的是遍歷,即訪問數(shù)組包含的所有元素。在C#中,常用for循環(huán)和foreach循環(huán)來實現(xiàn),以后的章節(jié)會詳細介紹。 需要注意的是,C#的數(shù)組類型是從抽象基類型System.Array派生的引用類型,System.Array類提供的Length屬性可以用來獲得數(shù)組的長度。System.Array類提供的Clear、Copy、Find、Resize、Sort等方法,可用于清空數(shù)組元素的值、復制數(shù)組元素、搜索數(shù)組元素、更改數(shù)組長度和對數(shù)組元素進行排序等。 【例例】 數(shù)組的簡單應用。數(shù)組的簡單應用。 字符串是一個由若干個Unicode 字符組成的字符數(shù)組。字符串常量使用雙引號來標記,如string

33、123 就是一個字符串常量。 字符串變量使用string關鍵字來聲明,如string name = “安師大,就是定義一個字符串變量name。 字符串既然是字符數(shù)組,就可以通過索引來提取字符串中的字符。例如:string str1=中華人民共和國;char c=str12; / 字符型變量c的值為字符人 雖然字符串是引用類型,但C#仍然允許使用=、!=來比較兩個字符串的大小,實際上是比較字符串中對應字符的大小。例如:string s1 = abc, s2 = ABC;bool b = (s1!=s2); / b的值為trueC#的關鍵字string 是.NET Framework類庫中的 Sy

34、stem.String 的別名,用于創(chuàng)建不可變的字符串(任何修改都會重新創(chuàng)建一個對象,因此頻繁修改會使得系統(tǒng)開銷很大),并包含System.String類提供的常用屬性和方法。例如Length屬性和Copy、IndexOf、LastIndexOf、Insert、Remove、Replace、Split、SubString、Trim等方法,分別用來獲得字符串長度、復制字符串、從左邊查找字符、從右邊查找字符、插入字符、刪除字符、替換字符、分割字符串、取子字符串、壓縮字符串的空白等操作。.NET Framework類庫中的System.Text.StringBuilder類用來構造可變字符串(修改時

35、不會重新創(chuàng)建一個對象),包含Length、Append、Insert、Remove、Replace、ToString等成員,分別用來獲得字符串長度、追加字符、刪除字符、替換字符和將StringBuilder轉(zhuǎn)換成string等操作。【例例】 字符串的簡單應用。字符串的簡單應用。 集合是通過高度結(jié)構化的方式存儲任意對象的類。集合不僅能隨意調(diào)整大小,而且對存儲或檢索存儲在其中的對象提供了更高級的方法。而數(shù)組的類型必須是相同的,且創(chuàng)建時就必須知道數(shù)組內(nèi)含有多少元素,還需要通過循環(huán)索引來訪問這些元素。與數(shù)組相比,使用集合管理數(shù)據(jù)會更加方便。 實際上,數(shù)組是集合的一種類型。 表表 .NET Framew

36、ork的常用集合類 1 1集合類的選擇集合類的選擇 每個集合有其自身的功能及限制,集合專用性越強,其限制就越多。選擇集合類時,一般要考慮以下問題: (1)是否需要隨機訪問集合中的元素。此時不能選擇Queue 隊列類、Stack棧類、LinkedList 雙向鏈表類,而其余的集合可以提供隨機訪問。 (2)是否需要一個序列列表。需要先進先出操作時,可使用 Queue 隊列類;而需要后進先出操作時,可使用 Stack棧類。 (3)是否包含一個值,還是一個鍵和一個值的集合。其中,“一個值”的集合是一種基于IList列表接口派生的集合,“一個鍵和一個值”的集合是一種基于IDictionary字典接口的集

37、合。 1 1集合類的選擇集合類的選擇 (4)是否需要通過索引訪問每個元素。常用集合類中,只有ArrayList是從索引為零的元素開始逐個訪問集合元素;Hashtable、Dictionary通過元素的鍵(即元素名字)提供對元素的訪問;而SortedList通過其元素的從零開始的索引,或者通過其元素的鍵提供對元素的訪問。 (5)是否需要用與輸入元素方式不同的方式對元素排序。Hashtable 按其元素的哈希代碼對元素排序,SortedList以及 SortedDictionary根據(jù)IComparer接口實現(xiàn)按鍵對元素的排序,而ArrayList提供Sort排序方法。 (6)是否需要信息的快速搜

38、索和檢索。對于小集合(10個元素或更少),ListDictionary比Hashtable快,SortedDictionary提供比Dictionary更快的查找。 2 2集合的使用集合的使用 C#為用戶提供了foreach語句,更好地支持了集合的使用。利用foreach 語句可以方便地遍歷集合中的每一個元素,foreach 語句的表達式的類型必須是集合類型。 foreach語句的格式為:foreach ( 類型 標識符 in 表達式 ) 嵌入語句; foreach語句的“類型”和“標識符”聲明該語句的迭代變量,迭代變量是一個其范圍覆蓋整個嵌入語句的只讀局部變量。在foreach語句執(zhí)行期間,

39、迭代變量表示當前正在為其執(zhí)行迭代的集合元素。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作 經(jīng)常使用的集合有ArrayList、Queue、Stack、Hashtable和SortedList,這些集合都位于System.Collections命名空間中,在使用時需要事先引用該命名空間。 (1)動態(tài)數(shù)組ArrayList。ArrayList的大小可根據(jù)需要自動擴充,允許在其中添加、插入或移除某一范圍的元素。ArrayList的下限始終為零,且始終只是一維的。 創(chuàng)建動態(tài)數(shù)組對象的一般形式如下:ArrayList 列表對象名 = new ArrayList( ); ArrayList常用的方法和功能包括

40、:Add,向數(shù)組中添加一個元素;Remove,刪除數(shù)組中的一個元素;RemoveAt,刪除數(shù)組中指定索引處的元素;Reverse,反轉(zhuǎn)數(shù)組的元素;Sort,以從小到大的順序排列數(shù)組的元素;Clone,復制一個數(shù)組。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(1)動態(tài)數(shù)組ArrayList。例如: ArrayList list = new ArrayList(); / 創(chuàng)建一個動態(tài)數(shù)組listlist.Add(abcdefg); / 向動態(tài)數(shù)組list中添加一個字符串list.Add(30); / 向動態(tài)數(shù)組list中添加一個整數(shù) 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(2)隊列Queue。 隊列

41、是一種先進先出的數(shù)據(jù)結(jié)構,當插入或刪除對象時,對象從隊列的一端插入,從另外一端移除。 創(chuàng)建隊列對象的一般形式如下: Queue 隊列名 = new Queue(隊列長度,增長因子); 說明:隊列長度默認為32,增長因子默認為2.0。即每當隊列容量不足時,隊列長度調(diào)整為原來的2倍。 隊列包括Enqueue、Dequeue、Peek、Clear和Contains等方法,主要功能分別是添加隊尾數(shù)據(jù)、移除并返回隊頭數(shù)據(jù)、返回隊頭數(shù)據(jù)、清空隊列和檢查是否包含某個數(shù)據(jù)。其中,Enqueue和Dequeue每操作一次只能添加或刪除一個數(shù)據(jù)。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(2)隊列Queue。例如:

42、/ 創(chuàng)建隊列q1,初始長度為50,容量不足時把隊列擴展為原來的2倍Queue q1 = new Queue(50); q1.Enqueue(網(wǎng)絡); / 在隊尾添加字符串“網(wǎng)絡”q1.Enqueue(軟件); / 在隊尾添加字符串“軟件”Console.WriteLine(q1.Dequeue(); / 輸出字符串“網(wǎng)絡”Console.WriteLine(q1.Dequeue(); / 輸出字符串“軟件” 上述代碼表示在隊列q1中添加兩個字符串,然后重復調(diào)用Dequeue方法,按先后順序返回并輸出這兩個字符串。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(3)棧Stack。 棧是一種先進后出的數(shù)

43、據(jù)結(jié)構,這種數(shù)據(jù)結(jié)構在插入或刪除對象時,只能在棧頂插入或刪除。 創(chuàng)建棧對象的一般形式如下:Stack 棧名 = new Stack( ); 棧包括Push、Pop、Peek、Clear和Contain等方法,分別可以實現(xiàn)棧頂數(shù)據(jù)推進、棧頂數(shù)據(jù)彈出、返回棧頂數(shù)據(jù)、清空棧和檢查棧中是否包含某個數(shù)據(jù)的操作。其中,Push和Pop每操作一次只能添加或刪除一個數(shù)據(jù)。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(3)棧Stack。 例如:Stack s1 = new Stack(); / 創(chuàng)建一個棧對象s1s1.Push(北京); / 從s1棧頂添加字符串s1.Push(上海); / 從s1棧頂再添加字符串C

44、onsole.WriteLine(s1.Pop(); / 輸出字符串上海Console.WriteLine(s1.Pop(); / 輸出字符串北京“ 上述代碼表示將兩個字符串添加到棧s1中,然后按照先進后出的原則輸出這兩個元素。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(4)哈希表Hashtable。 哈希表又稱散列表,表示鍵/值對的集合。哈希表在保存集合元素時,首先要根據(jù)鍵自動計算哈希代碼,以確定該元素的保存位置,再把元素的值放入相應位置所指向的存儲桶中。查找時,再次通過鍵所對應的哈希代碼到特定存儲桶中搜索,這樣可以極大的提高查找一個元素的效率。 創(chuàng)建哈希表對象的一般形式如下:Hashtabl

45、e 哈希表名 = new Hashtable(表長度,增長因子); 說明:哈希表默認長度為0,默認增長因子為1.0。 哈希表包括Add、Remove、Clear和Contains等方法,可以實現(xiàn)對哈希表數(shù)據(jù)的添加、移除、清空和查詢。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(4)哈希表Hashtable。例如:Hashtable h1 = new Hashtable(); / 創(chuàng)建哈希表對象h1h1.Add(1001,李百軍); / 添加鍵/值對元素h1.Add(1002,張艷楓);h1.Add(1003,劉沙海);h1.Remove(1002); / 刪除指定鍵元素Console.WriteL

46、ine(h11001); / 輸出指定鍵元素值Console.WriteLine(h11003); 上述代碼表示將3個鍵/值對添加到哈希表h1中,然后刪除第2個鍵/值對,輸出剩余的兩個元素。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(5)有序列表SortedList。 SortedList類表示“鍵/值對”的集合,這些鍵和值按鍵排序并可按照鍵和索引訪問。SortedList最合適對一列健/值對進行排序,在排序時,是對鍵進行排序。 SortedList是Hashtable和Array的混合。當使用Item索引器屬性按照元素的鍵訪問元素時,其行為類似于Hashtable。當使用GetByIndex或

47、SetByIndex方法按照元素的索引訪問元素時,其行為類似于Array。 3 3集合的創(chuàng)建與操作集合的創(chuàng)建與操作(5)有序列表SortedList。例如:SortedList mySL = new SortedList(); mySL.Add(First, Hello); / 添加鍵/值對元素mySL.Add(Second, World);mySL.Add(Third, !);Console.WriteLine(mySL); / 輸出SortedList的相關內(nèi)容Console.WriteLine( Count: 0, mySL.Count);Console.WriteLine( Capac

48、ity: 0, mySL.Capacity);上述代碼表示為SortedList對象mySL添加3個元素,再輸出mySL的元素數(shù)和容量大小。值類型值類型 引用類型用于存儲對實際數(shù)據(jù)的引用,而值類型用于存儲數(shù)據(jù)的值。值類型可以進一步劃分為簡單類型、枚舉類型和結(jié)構類型,而簡單類型包括前面介紹的整型、實數(shù)整型、實數(shù)型、字符型和布爾型型、字符型和布爾型。本節(jié)介紹枚舉類型、結(jié)構類型及值類型和引用類型之間的裝箱與拆箱操作。 枚舉 結(jié)構 裝箱與拆箱 1 1枚舉類型的定義和使用枚舉類型的定義和使用 枚舉實際上是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號,是一些取了名字的常量集合。 例如: / 定義一個表

49、示星期的枚舉類型WeekDay enum WeekDay Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday ; WeekDay day; / 聲明一個WeekDay枚舉類型的變量day 枚舉類型定義好后,就可以用來聲明變量。枚舉類型的變量在某一時刻只能取枚舉中某一個元素的值,如day的值要么是Sunday要么是Monday或其他的元素,但它在一個時刻只能代表具體的某一天,也不能是枚舉集合以外的其他元素。 1 1枚舉類型的定義和使用枚舉類型的定義和使用 在默認情況下,每個枚舉成員都會根據(jù)定義的順序(從0開始),自動賦給對應的基本類型值。上面例子中,Sunday的值為0,Monday的值為1,以此類推。 也可以給枚舉成員賦一個基本類型值,而沒有賦值的枚舉成員也會自動獲得一個值,它的值是比最后一個明確聲明的值大1的序列。 例如: enum orientationnorth = 6, south, east = 10, west / south的值為7,west的值為11 由此可知,枚舉類型成員可以比較大小,順序號大的其值就大。當然,枚舉成員的類型一致時才能進行比較。 2 2枚舉類型的轉(zhuǎn)換枚舉類型的轉(zhuǎn)換 每個枚舉類型都有一個相應的整數(shù)類型,稱

溫馨提示

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

評論

0/150

提交評論