




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、教育部普通高等教育十二五國家級規劃教材教育部普通高等教育十二五國家級規劃教材C#程序設計及應用教程程序設計及應用教程第第3版版(包括簡化版:(包括簡化版:C#程序設計教程程序設計教程第第3版)版)第第2章章 基本數據類型和流程控制語句基本數據類型和流程控制語句2Ch2 基本數據類型和流程控制語句基本數據類型和流程控制語句2.1 數據類型和運算符數據類型和運算符2.2 簡單類型簡單類型2.3 字符串字符串2.4 數組數組2.5 數據類型之間的轉換數據類型之間的轉換2.6 流程控制語句流程控制語句32.1 數據類型和運算符數據類型和運算符lC#類型劃分為兩類:值類型和引用類型。類型劃分為兩類:值類
2、型和引用類型。 值類型值類型: 包括簡單類型、枚舉類型、自定義結構類型、可空類型。包括簡單類型、枚舉類型、自定義結構類型、可空類型。 引用類型:引用類型: 包括類、接口、數組、委托。包括類、接口、數組、委托。 42.1 數據類型和運算符數據類型和運算符l值類型和引用類型的區別:值類型和引用類型的區別:值類型的變量保存的是值類型的變量保存的是變量的值變量的值;引用類型的變量保存的是引用類型的變量保存的是對象的引用地址對象的引用地址。當把一個值類型的變量賦給另一個值類型的變量時,當把一個值類型的變量賦給另一個值類型的變量時,會在堆棧(會在堆棧(stackstack)中保存兩個完全相同的值;)中保存
3、兩個完全相同的值;把一個引用變量賦給另一個引用變量,在堆棧中的兩把一個引用變量賦給另一個引用變量,在堆棧中的兩個值雖然相同,但是由于這兩個值都是堆(個值雖然相同,但是由于這兩個值都是堆(heapheap)中)中對象的引用地址,所以實際上引用的是同一個對象。對象的引用地址,所以實際上引用的是同一個對象。52.1 數據類型和運算符數據類型和運算符l值類型和引用類型的區別:值類型和引用類型的區別:進行數據操作時,對于值類型,由于每個變量都有自進行數據操作時,對于值類型,由于每個變量都有自己的值,因此對一個變量的操作不會影響到其他變量;己的值,因此對一個變量的操作不會影響到其他變量;對于引用類型的變量
4、,對一個變量的數據進行操作就對于引用類型的變量,對一個變量的數據進行操作就是對這個變量在堆中的數據進行操作,如果兩個引用是對這個變量在堆中的數據進行操作,如果兩個引用類型的變量引用同一個對象,對一個變量的操作同樣類型的變量引用同一個對象,對一個變量的操作同樣也會影響另一個變量。也會影響另一個變量。62.1 數據類型和運算符數據類型和運算符特性特性值類型值類型引用類型引用類型變量中保存的內容實際數據指向實際數據的引用指針內存空間配置堆棧(stack)受管制的堆(managed heap)內存需求較少較多執行效率較快較慢內存釋放時間點超過變量的作用域時由垃圾回收機制負責回收值類型和引用類型的區別值
5、類型和引用類型的區別72.1 .2 常量與變量常量與變量l常量常量C#用用const關鍵字聲明常量。關鍵字聲明常量。例如:例如:const int pi=2.1415927;const int pi=2.1415927;編譯器會把所有聲明為編譯器會把所有聲明為const的常量全部替換為實際的常數的常量全部替換為實際的常數。l變量:變量:表示一個數值、一個字符串值或者一個類的實例。表示一個數值、一個字符串值或者一個類的實例。int a = 100; /聲明一個整型變量聲明一個整型變量a,并賦初值為,并賦初值為100int a; /聲明一個整型變量聲明一個整型變量aa = 100; /為整型變量為
6、整型變量a賦值為賦值為100int a = 100, b, c = 200,d;82.1 .2 常量與變量常量與變量l匿名類型的局部變量匿名類型的局部變量局部變量在局部變量在C#中還可以用中還可以用var來聲明來聲明。用用var聲明的仍然是一種強類型的數據,只是具體的數據類型由聲明的仍然是一種強類型的數據,只是具體的數據類型由編譯器負責推斷而已。編譯器負責推斷而已。l例如:例如: var key = Console.ReadKey();這條語句和下面的語句是等價的:這條語句和下面的語句是等價的: ConsoleKeyInfo key = Console.ReadKey();92.1 .3 運算
7、符與表達式運算符與表達式l表達式由操作數和運算符構成。表達式由操作數和運算符構成。l運算符的種類:運算符的種類:一元運算符:帶有一個操作數的運算符,如一元運算符:帶有一個操作數的運算符,如i+。二元運算符:帶有兩個操作數的運算符,如二元運算符:帶有兩個操作數的運算符,如x + y。三元運算符:帶有三個操作數的運算符。三元運算符:帶有三個操作數的運算符。具體運算詳見表具體運算詳見表2-3。l表達式表達式可計算且結果為單個值、對象、方法或命名空間的代碼片段。可計算且結果為單個值、對象、方法或命名空間的代碼片段。2.2 簡單類型簡單類型l簡單類型包括整型、浮點型、布爾型和字符型簡單類型包括整型、浮點
8、型、布爾型和字符型。l簡單類型簡單類型是內置的值類型。是內置的值類型。l 整型整型即:即:計算機組成原理中計算機組成原理中的的定點數。定點數。在在C#中,用整型來表示定點整數。中,用整型來表示定點整數。C#語言提供了語言提供了8種整數類型,分別表示種整數類型,分別表示8位、位、16位、位、32位和位和64位位有符號和無符號的整數值。有符號和無符號的整數值。給變量賦常數值時給變量賦常數值時如果不如果不用類型指定符,默認將用類型指定符,默認將int類型的數值隱類型的數值隱式地轉換為該類型進行賦值。式地轉換為該類型進行賦值。例:例:long y = 1234; /intlong y = 1234;
9、/int型的數值型的數值12341234隱式地轉換為隱式地轉換為longlong類型類型102.2.1 整型整型l由于小寫字母容易和數字混淆,所以由于小寫字母容易和數字混淆,所以Uint、Long、Ulong類型類型的常量指定符一般都用大寫字母。例如:的常量指定符一般都用大寫字母。例如:long x = 1234L;l給變量賦值時,可采用十進制或十六進制的常數。如果是十六給變量賦值時,可采用十進制或十六進制的常數。如果是十六進制常數,在程序中必須加前綴進制常數,在程序中必須加前綴“0 x”。例如:。例如:long x = 0 x12ab; /聲明一個長整型變量聲明一個長整型變量x,并為其賦值為
10、十六進,并為其賦值為十六進制的數據制的數據12AB112.2.2 浮點型浮點型l浮點類型有浮點類型有:float、double和和decimal,它們均屬于值類型,它們均屬于值類型。l在計算機內部,在計算機內部,float和和double分別使用分別使用32位單精度和位單精度和64位雙位雙精度的精度的IEEE 754格式表示。格式表示。l可以用下面的形式給浮點型變量賦值:可以用下面的形式給浮點型變量賦值:float x = 2.3f; /x的值為的值為2.3,不加后綴默認為,不加后綴默認為doubledouble y = 2.7; /y的值為的值為2.7 double z = 2.7E+23;
11、 /z的值為的值為2.71023,這是一種科學表示法,這是一種科學表示法122.2.2 浮點型浮點型l實數常數后實數常數后如果如果沒有后綴,默認為沒有后綴,默認為double類型,類型,double類型類型也可以加也可以加D或或d后綴。后綴。15d、1.5d、1e10d和和122.456D都是都是double類型。類型。l注意注意:在實數中,小數點后必須始終是十進制數字。在實數中,小數點后必須始終是十進制數字。1.3F是實數(是實數(F表示該數為表示該數為float類型的常數),但類型的常數),但1.F不是,因為不是,因為F不是十進制數字。不是十進制數字。l小數型(小數型(decimal)是一
12、種特殊的浮點型數據,)是一種特殊的浮點型數據,其其特點是精度特點是精度高,但表示的數值范圍并不大。高,但表示的數值范圍并不大。decimal myMoney = 300.5M;decimal y = 9999999999999999999999999M;decimal x = 122.123456789123456789M;132.2.3 布爾型(布爾型(bool)l布爾型布爾型:用用bool表示,表示,bool類型只有兩個值:類型只有兩個值:true和和false。bool myBool = false;bool b = (i0 & i10);l條件表達式的運算結果必須是條件表達式的
13、運算結果必須是bool型型。l 錯誤用法錯誤用法 正確用法正確用法int i = 5, j = 6; int i = 5, j = 6;if(i) j += 10; /錯誤錯誤 if(i != 0) j += 10;if(j = 15) j += 10; /錯誤錯誤 if(j = 15) j += 10;142.2.4 字符(字符(char)l字符類型字符類型:值類型,用值類型,用char表示,表示單個表示,表示單個Unicode字符。一字符。一個個Unicode字符的標準長度為兩字節。字符型常量用單引號引字符的標準長度為兩字節。字符型常量用單引號引起來,例如:起來,例如:char c1 =
14、A;l可用十六進制的轉義符前綴(可用十六進制的轉義符前綴(“x”)或)或Unicode表示法前綴表示法前綴(“u”)表示字符型常量,例如:)表示字符型常量,例如:char c2 = x0041; /字母字母“A”的十六進制表示的十六進制表示char c3 = u0041; /字母字母“A”的的Unicode編碼表示編碼表示152.2 .5 枚舉(枚舉(enum)l枚舉類型將一組常量用一個類型來表示,該類型簡稱枚舉。枚舉類型將一組常量用一個類型來表示,該類型簡稱枚舉。定義一個稱為定義一個稱為MyColor的枚舉類型:的枚舉類型:public enum MyColor Red, Green, Bl
15、uepublic enum MyColor Red, Green, Blue也可以寫為也可以寫為public enum MyColors Red=0, Green=1, Blue=2public enum MyColors Red=0, Green=1, Blue=2l枚舉中的所有常量值必須是同一種類型(稱為基礎類型)。枚舉中的所有常量值必須是同一種類型(稱為基礎類型)。l基礎類型只能是基礎類型只能是8種整型類型之一。如果不指定基礎類型,默種整型類型之一。如果不指定基礎類型,默認為認為int類型。類型。l注意下面的寫法是錯誤的:注意下面的寫法是錯誤的:enum Number:bytex1 =
16、255,x2;16l【例【例2-1】定義一個】定義一個MyColor枚舉類型,然后聲明枚舉類型,然后聲明MyColor類類型的變量,通過該變量使用枚舉值。再通過型的變量,通過該變量使用枚舉值。再通過Enum類提供的靜類提供的靜態態GetNames方法將方法將MyColor的所有枚舉值全部顯示出來。的所有枚舉值全部顯示出來。172.2.6 可空類型可空類型l表示可以包含表示可以包含null的值類型。例如的值類型。例如int?讀作讀作“可以為可以為null的的Int32類型類型”,就是說可以將其賦值為任一個,就是說可以將其賦值為任一個32位整數值,也可位整數值,也可以將其賦值為以將其賦值為null
17、。l例:例:int? age = 0;int? n = null;double? d = 4.108;bool? isFlag = false;l在處理數據庫和其他包含不可賦值的元素的數據類型時,可以在處理數據庫和其他包含不可賦值的元素的數據類型時,可以為為null的值類型特別有用。的值類型特別有用。182.3 字符串字符串lC#語言語言的的字符串是由一個或多個字符串是由一個或多個Unicode字符構成的一組字符字符構成的一組字符序列。序列。lString和和string均可均可。lstring類型的常量類型的常量:用雙引號將字符串引起來。用雙引號將字符串引起來。l例如:例如:string s
18、tr1 = ABCD;string str2 = mystr1;int i = 3;string str3 = str1 + str2;string str4 = str1 + i; 192.3.1 字符串的創建與表示形式字符串的創建與表示形式l常用常用形式形式:string s1 = this is a string.;string s2 = new string(a,4); /結果為結果為aaaastring filePath = C:CSharpMyFile.cs;string filePath = C:CSharpMyFile.cs;l注意注意:string是是Unicode字符串,計
19、算字符串長度時,每個英字符串,計算字符串長度時,每個英文字母的長度為文字母的長度為1,每個漢字的長度也是,每個漢字的長度也是1。例如:例如:string str = abstring str = ab張三張三cde;cde;Console.WriteLine(str.Length); /Console.WriteLine(str.Length); /輸出結果:輸出結果:7 7202.3.2 字符串的常用操作方法字符串的常用操作方法字符串常用操作字符串常用操作:比較、查找、插入、刪除、替換、求子串、移比較、查找、插入、刪除、替換、求子串、移除首尾字符、合并與拆分以及大小寫轉換等。除首尾字符、合并
20、與拆分以及大小寫轉換等。1.字符串比較字符串比較l精確比較精確比較:用用string.Compare方法。方法。l如果僅僅比較兩個字符串是否相等,最好用如果僅僅比較兩個字符串是否相等,最好用Equals方法或者直方法或者直接使用兩個等號來比較。接使用兩個等號來比較。212.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)2.字符串查找字符串查找l方法方法1:用用stringindex得到字符串中第得到字符串中第index個位置的單個字個位置的單個字符。符。l方法方法2:用:用Contains方法查找一個字符串中是否包含指定的子方法查找一個字符串中是否包含指定的子字符串,語法為字符串,
21、語法為public bool Contains( string value )例:例:if(s1.Contains(abc) Console.WriteLine(s1中包含中包含abc);222.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)l方法方法3:用:用StartsWith方法和方法和EndsWith方法方法,從字符串的首或從字符串的首或尾開始查找指定的子字符串,并返回布爾值(尾開始查找指定的子字符串,并返回布爾值(true或或false)。)。例如:例如:string s1 = this is a string;Console.WriteLine(s1.StartsWit
22、h(abc); /結果為結果為FalseConsole.WriteLine(s1.StartsWith(this); /結果為結果為TrueConsole.WriteLine(s1.EndsWith(abc); /結果為結果為FalseConsole.WriteLine(s1.EndsWith(ing); /結果為結果為True232.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)l方法方法4:用:用IndexOf方法和方法和LastIndexOf方法方法,求某個字符或者求某個字符或者子串在字符串中出現的位置。該方法有多種重載形式,最常用子串在字符串中出現的位置。該方法有多種重載形
23、式,最常用的有如下兩種形式。的有如下兩種形式。(a)public int IndexOf( string s )u這種形式返回這種形式返回s s在字符串中首次出現的從零開始的位置。如果字符串在字符串中首次出現的從零開始的位置。如果字符串中不存在中不存在s s,則返回,則返回1 1。(b)public int IndexOf( string s, int startIndex )u這種形式從這種形式從startIndexstartIndex處開始查找處開始查找s s在字符串中首次出現的從零開始在字符串中首次出現的從零開始的位置。如果找不到,則返回的位置。如果找不到,則返回1 1。lLastInd
24、exOf方法的用法與方法的用法與IndexOf方法相同,區別是方法相同,區別是LastIndexOf方法與方法與IndexOf方法的查找方向剛好相反。方法的查找方向剛好相反。242.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)l方法方法5:IndexOfAny方法方法,查找某個字符串中是否包含某些字查找某個字符串中是否包含某些字符(多個不同的字符)。常用語法為符(多個不同的字符)。常用語法為public int IndexOfAny( char anyOf )該方法返回該方法返回Unicode字符數組中的任意字符在字符串實例中第一字符數組中的任意字符在字符串實例中第一個匹配項的從
25、零開始的索引位置,如果未找到個匹配項的從零開始的索引位置,如果未找到anyOf中的任何一中的任何一個字符,則返回個字符,則返回1。例如:。例如:string s1 = 123abc123abc123;string s1 = 123abc123abc123;char c = a, b, 5, 8 ;char c = a, b, 5, 8 ;int x = s1.IndexOfAny(c); /xint x = s1.IndexOfAny(c); /x結果為結果為3 3252.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)3. 獲取字符串中的單個字符或者子字符串獲取字符串中的單個字符或
26、者子字符串l可直接用可直接用中括號指明字符在字符串中的序號,例如:中括號指明字符在字符串中的序號,例如:string myString = some text;u/求字符串求字符串myStringmyString第第2 2個字符,結果為個字符,結果為m m(第(第0 0個為個為s s,第,第1 1個為個為o o)char myChar = myString2; lSubstring方法方法:得到從某個位置開始的子字符串。得到從某個位置開始的子字符串。string s1 = abc123; /結果為結果為c123string s2 = s1.Substring(2); /結果為結果為c12str
27、ing s3 = s1.Substring(2, 3);262.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)4字符串的插入、刪除與替換字符串的插入、刪除與替換l語法語法從從startIndex開始插入子字符串開始插入子字符串value public string Insert(int startIndex,string value)public string Insert(int startIndex,string value)刪除從刪除從startIndex到字符串結尾的子字符串到字符串結尾的子字符串public string Remove(int startIndex) pu
28、blic string Remove(int startIndex) 刪除從刪除從startIndex開始的開始的count個字符個字符public string Remove(int startIndex, int count) public string Remove(int startIndex, int count) 將將oldChar的所有匹配項均替換為的所有匹配項均替換為newCharpublic string Replace(char oldChar, char newChar)public string Replace(char oldChar, char newChar) 將
29、將oldValue的所有匹配項均替換為的所有匹配項均替換為newValuepublic string Replace(string oldValue, string newValue)public string Replace(string oldValue, string newValue)272.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)5移除首尾字符移除首尾字符l用用TrimStart、TrimEnd方法方法實現實現。l如果不指定要移除的字符,則默認移除空格。如果不指定要移除的字符,則默認移除空格。282.3.2 字符串的常用操作方法(續字符串的常用操作方法(續)6字符串
30、中字母的大小寫轉換字符串中字母的大小寫轉換l用用ToUpper、ToLower方法。例:方法。例:string s1 = This is a string;string s2 = s1.ToUpper( ); /s2結果為結果為THIS IS A STRINGstring s3 = Console.ReadLine( );if (s2.ToLower( ) = yes) Console.WriteLine(OK);292.3.3 String與與StringBuilderlString類表示的是一系列不可變的字符,無法直接修改給該字類表示的是一系列不可變的字符,無法直接修改給該字符串分配的堆中
31、的字符串。符串分配的堆中的字符串。l在字符串連接操作比較多的情況下,使用在字符串連接操作比較多的情況下,使用StringBuilder類可類可以大大提高系統的性能。例如:以大大提高系統的性能。例如:StringBuilder sb = new StringBuilder( );sb.Append(string1);sb.AppendLine(string2);sb.Append(string3);string s = sb.ToString( );Console.WriteLine(s);302.4 數組數組l數組表示相同類型的對象的集合。數組表示相同類型的對象的集合。l數組是引用類型。數組是
32、引用類型。l聲明數組類型是通過在某個類型名后加一對方括號來構造的。聲明數組類型是通過在某個類型名后加一對方括號來構造的。31數數 組組 類類 型型語語 法法示示 例例一維數組一維數組數據類型 數組名;int myArray;二維數組二維數組數據類型, 數組名;int, myArray;三維數組三維數組數據類型, 數組名;int, myArray;交錯數組交錯數組數據類型 數組名;int myArray;常用數組的語法聲明格式2.4 數組數組l數組的秩(數組的秩(rank)是指數組的維數,如一維數組秩為)是指數組的維數,如一維數組秩為1,二維,二維數組秩為數組秩為2。l數組長度是指數組中所有元素
33、的個數。例如:數組長度是指數組中所有元素的個數。例如:int a = new int10; /10個元素,分別為個元素,分別為a0、a1a9int, b = new int3, 5;/長度為長度為3*5=15,其中第,其中第0維長度為維長度為3,第第1維長度為維長度為5322.4.1 一維數組一維數組l數組的下標默認從數組的下標默認從0開始索引。假如數組有開始索引。假如數組有30個元素,則一維個元素,則一維數組的下標范圍為數組的下標范圍為029。l可通過在中括號內指定下標來訪問某個元素。例如:可通過在中括號內指定下標來訪問某個元素。例如:int a = new int30;a0 = 23; /
34、 為為a數組中的第一個元素賦值數組中的第一個元素賦值23a29 = 67; / 為為a數組中的最后一個元素賦值數組中的最后一個元素賦值67l一維數組的一維數組的Length屬性表示數組的長度。例如:屬性表示數組的長度。例如:int arrayLength = a.Length;332.4.1 一維數組一維數組l元素個數確定后,數組的長度就確定了。例如:元素個數確定后,數組的長度就確定了。例如:int a1 = new int30; /a1共有共有30個元素,分別為個元素,分別為a10a129int number = 10;string a2 new Stringnumber; / a2共有共有
35、numer個元素個元素l也可以在聲明語句中直接用簡化形式為各元素賦初值,例如:也可以在聲明語句中直接用簡化形式為各元素賦初值,例如:string a = first,second,third;或或string a = new string first,second,third;342.4.1 一維數組一維數組l注意:注意:不帶不帶new運算符的簡化形式只能用在聲明語句中運算符的簡化形式只能用在聲明語句中。l比較下面的寫法:比較下面的寫法:string a1 = first, second, third ; /正確正確string a2 = new string first, second, t
36、hird ; /正確正確string a3;a3 = first, second, third ; /錯誤錯誤string a4;a4 = new string first, second, third ; /正確正確352.4.2 多維數組多維數組l多維數組多維數組:指維數大于指維數大于1的數組,常用的是二維的數組,常用的是二維。l下面的下面的3條語句作用相同,都是創建一個條語句作用相同,都是創建一個3行行2列的數組:列的數組:int, n1 = new int3, 2 1, 2, 3, 4, 5, 6 ;int, n2 = new int, 1, 2, 3, 4, 5, 6 ;int, n
37、3 = 1, 2, 3, 4, 5, 6 ;l下面的語句創建一個三維數組:下面的語句創建一個三維數組: int, array3D = new int, 1, 2, 3 , 4, 5, 6 , 7, 8, 9 , 10, 11, 12 ;36l【例【例2-2】編寫一個控制臺應用程序,演示二維數組的聲明與】編寫一個控制臺應用程序,演示二維數組的聲明與初始化,并分別輸出數組的秩、數組長度以及數組中的每個元初始化,并分別輸出數組的秩、數組長度以及數組中的每個元素的值。素的值。372.4.3 交錯數組交錯數組l交錯數組交錯數組:即每個元素又是一個數組:即每個元素又是一個數組。int n1 = new i
38、nt2 new int 2,4,6, new int 1,3,5,7,9;注意:注意:初始化交錯數組時,每個元素的初始化交錯數組時,每個元素的new運算符不能省略。運算符不能省略。38l【例【例2-3】演示交錯數組的基本用法。】演示交錯數組的基本用法。392.4.4 數組的常用操作方法數組的常用操作方法l1數組的統計運算及數組和字符串之間的轉換數組的統計運算及數組和字符串之間的轉換Average方法、方法、Sum方法、方法、Max方法和方法和Min方法。方法。可直接用可直接用string的靜態的靜態Join方法和靜態方法和靜態Split方法實現字符串和字方法實現字符串和字符串數組之間的轉換。符
39、串數組之間的轉換。Join方法相當于將多個字符串插入分隔符后合并在一起。語法為方法相當于將多個字符串插入分隔符后合并在一起。語法為upublic static string Join( string separator, string value public static string Join( string separator, string value ) )Split方法用于將字符串按照指定的一個或多個字符進行分離得到方法用于將字符串按照指定的一個或多個字符進行分離得到一個字符串數組。常用語法為一個字符串數組。常用語法為upublic string Split( params cha
40、r separator )public string Split( params char separator )40l【例【例2-4】演示如何統計數組中的元素以及如何實現數組和字】演示如何統計數組中的元素以及如何實現數組和字符串之間的轉換。符串之間的轉換。412.4.4 數組的常用操作方法數組的常用操作方法l2數組元素的復制、排序與查找數組元素的復制、排序與查找l常用有:常用有:Copy方法:將一個數組中的全部或部分元素復制到另一個數組方法:將一個數組中的全部或部分元素復制到另一個數組中。中。Sort方法:使用快速排序算法,將一維數組中的元素按照升序排方法:使用快速排序算法,將一維數組中的元
41、素按照升序排列。列。Reverse方法:反轉一維數組中的元素。方法:反轉一維數組中的元素。另外,還可以使用該類提供的另外,還可以使用該類提供的Contains方法和方法和IndexOf方法查找方法查找指定的元素。指定的元素。42l【例【例2-5】演示一維數組的復制和排序。】演示一維數組的復制和排序。432.5 數據類型之間的轉換數據類型之間的轉換l2.5.1 值類型之間的數據轉換值類型之間的數據轉換l1隱式轉換隱式轉換隱式轉換隱式轉換:指:指不需要加以聲明就可以進行的轉換,如從不需要加以聲明就可以進行的轉換,如從int類型轉類型轉換到換到long類型:類型:uint k = 1;int k =
42、 1;ulong i = 2;long i = 2;ui = k; /i = k; /隱式轉換隱式轉換不同值類型之間的轉換不同值類型之間的轉換:從低精度、小范圍的數據類型轉換為高從低精度、小范圍的數據類型轉換為高精度、大范圍的數據類型,可以使用隱式轉換。精度、大范圍的數據類型,可以使用隱式轉換。442.5 數據類型之間的轉換數據類型之間的轉換l2顯式轉換顯式轉換需要用戶明確地指定轉換的類型。例如:需要用戶明確地指定轉換的類型。例如:long k = 5000;long k = 5000;int i = (int)k;int i = (int)k;所有隱式轉換都可以采用顯式轉換表示。例如:所有隱
43、式轉換都可以采用顯式轉換表示。例如:int i = 10;int i = 10;long j = (long)i;long j = (long)i;將大范圍類型的數據轉換為小范圍類型的數據時必須特別謹慎,將大范圍類型的數據轉換為小范圍類型的數據時必須特別謹慎,因為此時可能有丟失數據的危險。例如:因為此時可能有丟失數據的危險。例如:long r = 3000000000;long r = 3000000000;int i = (int)r;int i = (int)r;452.5.2 值類型和引用類型之間的轉換值類型和引用類型之間的轉換l1Object類類Object類是所有類型的基類。類是所有
44、類型的基類。C#語言中的類型都直接或間接地語言中的類型都直接或間接地從從Object類繼承,因此,可以將類繼承,因此,可以將Object類的對象顯式轉換為任何類的對象顯式轉換為任何一種對象。一種對象。ustring s = (10).ToString( );string s = (10).ToString( );l2裝箱裝箱將值類型隱式地轉換為將值類型隱式地轉換為Object類型。例如:類型。例如:uint i = 123;int i = 123;uobject o = i; /object o = i; /裝箱裝箱462.5.2 值類型和引用類型之間的轉換值類型和引用類型之間的轉換l3拆箱拆
45、箱把把Object類型轉換為值類型。拆箱操作包括以下兩個步驟。類型轉換為值類型。拆箱操作包括以下兩個步驟。u(1 1)檢查對象實例,確認它是否包裝了值類型的數。)檢查對象實例,確認它是否包裝了值類型的數。u(2 2)把實例中的值復制到值類型的變量中。)把實例中的值復制到值類型的變量中。l例如:例如:int i = 123; /值類型值類型object box = i; /裝箱操作裝箱操作int j = (int)box; /拆箱操作拆箱操作l注意注意:裝箱和拆箱必須遵循類型兼容的原則。裝箱和拆箱必須遵循類型兼容的原則。472.6 流程控制語句流程控制語句l最基本的語句最基本的語句static
46、void Main() int a; /聲明語句聲明語句 int b = 2, c = 3; /聲明語句聲明語句 a = b + c + 1;/表達式語句表達式語句 const float pi = 2.14f; /聲明語句聲明語句 const int r = 25;/聲明語句聲明語句 double m = pi * r * r;/表達式語句表達式語句482.6.1 分支語句分支語句lC#語言提供了兩種分支語句:語言提供了兩種分支語句:if語句和語句和switch語句。語句。lIf語句語句 If if else if else if if else if else if else49l【例【例
47、2-6】設有如下數學表達式,從鍵盤接收】設有如下數學表達式,從鍵盤接收x的值,然后根據的值,然后根據x的值計算的值計算y的值,并輸出計算結果。的值,并輸出計算結果。50100010 xyxx2.6.1 分支語句分支語句l2switch語句語句switch語句中可包含許多語句中可包含許多case塊,每個塊,每個case標記后可以指定一標記后可以指定一個常量值。個常量值。常量值常量值:指指switch中的條件表達式計算的結果,例如中的條件表達式計算的結果,例如: 字符串字符串:張三張三“ 字符字符:a 整數整數:25 另外還可以是枚舉等。另外還可以是枚舉等。512.6.1 分支語句分支語句l2sw
48、itch語句語句switch (條件表達式條件表達式) case 常量常量1: 語句序列語句序列1 break; case 常量常量2: 語句序列語句序列2 break;52 default: 語句序列語句序列n break; l【例【例2-7】從鍵盤接收一個成績,按優秀(】從鍵盤接收一個成績,按優秀(90-100)、良好()、良好(70-89)、及格()、及格(60-69)、不及格()、不及格(60分以下)輸出成績等級分以下)輸出成績等級。53 2.6.2 循環語句循環語句l包括包括for語句、語句、while語句、語句、do語句和語句和foreach語句。語句。l1for語句語句for (fo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 摩托車騎行管理制度
- 收并購項目管理制度
- 政府項目庫管理制度
- 教務處工作管理制度
- 教育員績效管理制度
- 文化禮堂誰管理制度
- 月度大掃除管理制度
- 木材防腐池管理制度
- 機關文化室管理制度
- 機場充電樁管理制度
- 智能制造能力成熟度模型(-CMMM-)介紹及評估方法分享
- 子宮腺肌病三級管理專家共識解讀
- 鋼材采銷方案
- 上海市2025年中考模擬初三英語試卷試題及答案
- 長租公寓管理制度
- 華東理工大學《藥劑學》2023-2024學年第一學期期末試卷
- 第四單元《遵守法律規范》測試卷-高二思想政治課《職業道德與法治》附答案
- 保安保潔物業服務招投標書范本
- 工貿行業法律法規清單法規清單
- 【《智慧城市建設中電子政務建設問題及完善策略一以瀘州市為例》9000字(論文)】
- 2024江蘇郵政社會招聘高頻難、易錯點500題模擬試題附帶答案詳解
評論
0/150
提交評論