版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章,C#基礎(chǔ)知識,2,本章目標(biāo),數(shù)據(jù)類型 變量常量的定義數(shù)組類型轉(zhuǎn)換運(yùn)算符控制結(jié)構(gòu),3,數(shù)據(jù)類型,在C#中沒有數(shù)據(jù)類型,只有數(shù)據(jù)類型的映射C#中使用的數(shù)據(jù)類型都是MSIL數(shù)據(jù)類型的映射 因為C#源文件最終編譯為MSIL代碼,因此在C#源文件中使用MSIL數(shù)據(jù)類型也可以int在C#只是Int32的一個別名而已,,,4,數(shù)據(jù)類型,數(shù)據(jù)類型分類:值類型,引用類型基本值類型包括:int、uint、short、ushort、
2、long、ulong、float、double、decimal 、bool、char、byte,sbyte、基本引用類型:string,object,,,5,數(shù)據(jù)類型,,,,6,值類型數(shù)據(jù)類型,值類型:所有的值類型都繼承自System.ValueType類ValueType類:實(shí)際上ValueType是一個繼承自object的類,所有的值類型都默認(rèn)繼承自ValueType。所有都值類型都是.Net平臺上定義的結(jié)構(gòu)(struct),
3、,,7,引用數(shù)據(jù)類型--object,基本引用類型包括:object,string在C#中,object是所有類型的父類在object類中沒有字段,只有方法公開的方法有,,,8,值類型變量的定義,定義一個值類型的變量:int i=12;//使用C#的別名定義一個變量Int32 i=new Int32();//使用MSIL的數(shù)據(jù)類型定義一個變量以上兩句是等價的Int32這種類型是否類似于Java中的包裝類?從方法屬性的角度
4、類似Int32在內(nèi)存中開辟的空間在棧區(qū),而包裝類開辟的空間在堆區(qū)值類型也有方法原因是它從object類繼承而來,,,9,引用類型變量的定義,定義一個引用類型的變量:Student stu;//定義一個Student類型的引用stu=new Student();//實(shí)例化Student并將對象的地址賦給stu引用Student stu=new Student();以上兩句是等價的,,,10,常量的定義,不能使用static修
5、飾符只能在定義的時候初始化定義一個值類型的常量:public const int MONDAY=1;public const int TUESDAY=1+MONDAY;定義一個引用類型的常量:public const Student stu=new Student();public const string s=“ACCP”;,,,11,常量的定義,可以使用readonly關(guān)鍵字定義只讀字段只讀字段和常量一樣不能被賦
6、值只讀字段可以在定義或者構(gòu)造方法中進(jìn)行初始化只讀字段定義的是運(yùn)行時常量,const定義的是編譯時常量例子:public readonly int CONTRY=1;public readonly int CONTRY;public Student(){CONTRY=1;},,,12,數(shù)組,數(shù)組是一組類型相同的值,是引用類型一維數(shù)組的聲明:數(shù)據(jù)類型 [ ] 數(shù)組名稱;數(shù)據(jù)類型 [ ] 數(shù)組名稱 =new
7、數(shù)據(jù)類型[數(shù)組大小 ];方括號只能在中間,,,13,數(shù)組,數(shù)組的初始化:數(shù)據(jù)類型 [ ] 數(shù)組名稱={初始化數(shù)值序列};數(shù)據(jù)類型 [ ] 數(shù)組名稱 =new 數(shù)據(jù)類型[數(shù)組大小 ]{初始化數(shù)值序列};數(shù)據(jù)類型 [ ] 數(shù)組名稱 =new 數(shù)據(jù)類型[ ]{初始化數(shù)值序列};對于第二種初始化方式,數(shù)值序列的個數(shù)不能大于數(shù)組大小對于值類型的數(shù)組,系統(tǒng)自動將元素初始化為0對于引用類型的數(shù)組,系統(tǒng)自動將元素初始化為null,,,14
8、,二維數(shù)組,二維數(shù)組的定義(矩陣):數(shù)據(jù)類型 [ , ] 數(shù)組名稱 =new 數(shù)據(jù)類型[行數(shù) , 列數(shù) ];訪問數(shù)組元素:數(shù)組名稱[行下標(biāo) , 列下標(biāo)]二維數(shù)組的定義(非齊整矩陣):數(shù)據(jù)類型 [ ] [ ] 數(shù)組名稱 =new 數(shù)據(jù)類型[行數(shù)] [ ];確定每行的大小:數(shù)組名稱 [ 0 ]=new 數(shù)據(jù)類型[ 列數(shù)1 ];數(shù)組名稱 [ 1 ]=new 數(shù)據(jù)類型[ 列數(shù)2 ];數(shù)組名稱 [ 2 ]=new 數(shù)據(jù)類
9、型[ 列數(shù)3 ];訪問數(shù)組元素:數(shù)組名稱 [ 行下標(biāo) ] [ 列下標(biāo) ],,,15,數(shù)組元素個數(shù),一維數(shù)組的元素個數(shù):使用Length屬性可以得到數(shù)組元素的個數(shù)二維數(shù)組的元素個數(shù)(矩陣):使用Length屬性可以得到數(shù)組元素的總個數(shù)使用GetLength(0)可以得到二維數(shù)組的行數(shù)使用GetLength(1)可以得到二維數(shù)組的列數(shù)二維數(shù)組的元素個數(shù)(非齊整矩陣):使用Length屬性可以得到數(shù)組元素的行數(shù)使用GetLe
10、ngth(0)可以得到數(shù)組的行數(shù)使用GetLength(1)將會越界每行元素的個數(shù)的獲?。簲?shù)組名稱[行下標(biāo)].Length,,,16,動態(tài)數(shù)組ArrayList 類,ArrayList 類的容量可以根據(jù)需要動態(tài)擴(kuò)展。通過設(shè)置ArrayList.Capacity 的值可以重新分配內(nèi)存和復(fù)制元素使用 ArrayList 提供的方法可以同時添加、插入或移除一個范圍內(nèi)的元素許多需要使用數(shù)組的實(shí)例都可以使用ArrayList常用屬性、方
11、法屬性Capacity、 Count;方法: Add,Insert,Remove,RemoveAt,17,示例,ArrayList List = new ArrayList();//給數(shù)組增加10個Int元素for( int i=0;i<10;i++ ) List.Add(i); //..程序做一些處理//將第6個元素移除List.RemoveAt(5); //再增加3個元素for( int i=0;i<
12、;3;i++ ) List.Add(i+20);//返回ArrayList包含的數(shù)組Int32[] values = (Int32[])List.ToArray(typeof(Int32));,18,類型轉(zhuǎn)換,C#中的類型轉(zhuǎn)換有以下3種:隱式轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換方法轉(zhuǎn)換隱式轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換在相同類型之間進(jìn)行:值類型到值類型的轉(zhuǎn)換,引用類型到引用類型之間的轉(zhuǎn)換方法轉(zhuǎn)換在不同類型之間的轉(zhuǎn)換:值類型到引用類型的轉(zhuǎn)換,引用類型到值類型之
13、間的轉(zhuǎn)換,,,19,類型轉(zhuǎn)換(值類型),隱式轉(zhuǎn)換:數(shù)據(jù)類型兼容的情況下可以進(jìn)行隱式轉(zhuǎn)換long i;int k=12;i=k;強(qiáng)制轉(zhuǎn)換:當(dāng)數(shù)據(jù)類型轉(zhuǎn)換可能失敗或者丟失數(shù)據(jù)時,需要強(qiáng)制轉(zhuǎn)換long i=12;int k;k=(int)i;,,,20,類型轉(zhuǎn)換(引用類型),隱式轉(zhuǎn)換:將子類對象轉(zhuǎn)換為父類引用時Father father;Son son=new Son();father=son;強(qiáng)制轉(zhuǎn)換:
14、將父類對象轉(zhuǎn)換為子類引用時Father father=new Father();Son son;son=(Son)father;,,,21,類型轉(zhuǎn)換,方法轉(zhuǎn)換:值類型和引用類型之間的轉(zhuǎn)換例如:將int類型轉(zhuǎn)換為stringint i=22;string s=i.ToString();將string轉(zhuǎn)換為int類型string s=“123”;int i=int.Parse(s);,,,22,裝箱拆箱,裝箱:將值
15、類型的數(shù)據(jù)作為引用類型傳遞例如:int i=22;object obj=i;所有的值類型都可以進(jìn)行裝箱過程拆箱:將引用類型中的值類型數(shù)據(jù)提取出來例如(接上例):int k;k=(int)obj;不是所有的引用類型都可以提取值類型的數(shù)據(jù),只有知道了裝箱之前的數(shù)據(jù)類型,才能進(jìn)行拆箱工作k=(int)obj;,,,23,算術(shù)運(yùn)算符,24,算術(shù)運(yùn)算符,25,比較運(yùn)算符,26,邏輯運(yùn)算符,27,運(yùn)算符的優(yōu)先級,28,運(yùn)
16、算符的優(yōu)先級,盡量不要利用運(yùn)算符的優(yōu)先級,來生成正確的結(jié)果使用()來指定執(zhí)行的順序,29,選擇結(jié)構(gòu) 3-1,語法: if () { } else { },選擇結(jié)構(gòu)用于根據(jù)表達(dá)式的值執(zhí)行語句,if … else,30,選擇結(jié)構(gòu) 3-2,語法:switch (選擇變量){case 值1: … break;case 值2: … break;case
17、 值3: … break;......default : …},switch…case,31,switch…case 的其他特性,選擇結(jié)構(gòu) 3-3,Case后的內(nèi)容可以是整型或者字符串default 標(biāo)簽不是必選的,但使用 default 標(biāo)簽是一個良好的編程習(xí)慣每兩個 case 標(biāo)簽之間的語句數(shù)不限每兩個 case 標(biāo)簽應(yīng)該使用break將其分開,如果沒有break,那么就應(yīng)該有return語
18、句,要么將case中的語句全部刪除,就不會問題,32,循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)用于對一組命令執(zhí)行一定的次數(shù)或反復(fù)執(zhí)行一組命令,直到指定的條件為真。循環(huán)結(jié)構(gòu)的類型 while 循環(huán)do while循環(huán)for 循環(huán)foreach 循環(huán),33,循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)可以作以下循環(huán)固定循環(huán)次數(shù)的不固定循環(huán)次數(shù)的(由程序本身決定)死循環(huán)循環(huán)次數(shù)由用戶決定的,34,while 循環(huán)反復(fù)執(zhí)行指定的語句,直到指定的條件為假語法 :while
19、 (條件) { // 語句}break 語句可用于退出循環(huán)continue 語句可用于跳過當(dāng)前循環(huán)并開始下一循環(huán),while 循環(huán),35,do…while 循環(huán),do…while 循環(huán)與 while 循環(huán)類似,二者區(qū)別在于 do…while 循環(huán)中即使條件為假時也至少執(zhí)行一次該循環(huán)體中的語句。 語法 :do{ // 語句} while (條件),36,for 循環(huán),for 循環(huán)要求只有在對特定條件進(jìn)行
20、判斷后才允許執(zhí)行循環(huán) 這種循環(huán)用于將某個語句或語句塊重復(fù)執(zhí)行預(yù)定次數(shù)的情形 語法 :for (初始值; 條件; 增/減){ //語句},37,foreach 循環(huán) 2-1,foreach 循環(huán)用于遍歷整個集合或數(shù)組 語法: foreach (數(shù)據(jù)類型 元素(變量) in 集合或者數(shù)組) { //語句 },38,foreach 循環(huán)2-2,static voi
21、d Main(string[] args){// 存放字母的個數(shù) int countLetters = 0;// 存放數(shù)字的個數(shù)int countDigits = 0;// 存放標(biāo)點(diǎn)符號的個數(shù)int countPunctuations = 0;// 用戶提供的輸入 string input;Console.WriteLine("請輸入一個字符串 ");input = Cons
22、ole.ReadLine();// 聲明 foreach 循環(huán)以遍歷輸入的字符串中的每個字符。 foreach(char chr in input) {// 檢查字母if(char.IsLetter(chr))countLetters++;// 檢查數(shù)字if(char.IsDigit(chr))countDigits++;// 檢查標(biāo)點(diǎn)符號if(char.IsPunct
23、uation(chr))countPunctuations++;}Console.WriteLine(“字母的個數(shù)為: {0}", countLetters);Console.WriteLine(“數(shù)字的個數(shù)為: {0}", countDigits);Console.WriteLine(“標(biāo)點(diǎn)符號的個數(shù)為: {0}", countPunctuations);},,為所有計數(shù)器設(shè)置初
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論