《C基礎(chǔ)語法二》ppt課件_第1頁
《C基礎(chǔ)語法二》ppt課件_第2頁
《C基礎(chǔ)語法二》ppt課件_第3頁
《C基礎(chǔ)語法二》ppt課件_第4頁
《C基礎(chǔ)語法二》ppt課件_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C#C#根底語法二根底語法二西源軟件培訓(xùn)中心西源軟件培訓(xùn)中心回想uHello World程序的根本構(gòu)造uC#的數(shù)據(jù)類型可以分為:值類型、援用類型。u變量是存放特定數(shù)據(jù)類型的值的容器,而常量也存放特定數(shù)據(jù)類型的值,但常量在整個(gè)程序中都堅(jiān)持一致目的目的u了解裝箱和拆箱的概念u掌握表達(dá)式和運(yùn)算符u掌握操作符u掌握流程控制裝箱和取消裝箱u裝箱是將 值類型轉(zhuǎn)換為 object 類型或由此值類型實(shí)現(xiàn)的任一接口類型的過程。當(dāng) CLR 對值類型進(jìn)展裝箱時(shí),會將該值包裝到 System.Object 內(nèi)部,再將后者存儲在托管堆上。取消裝箱將從對象中提取值類型。裝箱和取消裝箱u裝箱 int i = 123; ob

2、ject o = (object)i; u取消裝箱 o = 123; i = (int)o; 裝箱和取消裝箱的性能 u相對于簡單的賦值而言,裝箱和取消裝箱過程需求進(jìn)展大量的計(jì)算。對值類型進(jìn)展裝箱時(shí),必需分配并構(gòu)造一個(gè)新對象。次之,取消裝箱所需的強(qiáng)迫轉(zhuǎn)換也需求進(jìn)展大量的計(jì)算。 u假設(shè)必需頻繁地將值類型裝箱,那么最好防止運(yùn)用值類型,例如在非泛型集合類System.Collections.:.ArrayList中??梢越?jīng)過運(yùn)用泛型集合例如 System.Collections.Generic.:.List(Of )來防止將值類型裝箱。裝箱和取消裝箱都是需求大量運(yùn)算的過程。對值類型進(jìn)展裝箱時(shí),必需創(chuàng)建

3、一個(gè)全新的對象。此操作所需時(shí)間可比簡單的援用賦值操作長 20 倍。取消裝箱時(shí),強(qiáng)迫轉(zhuǎn)換過程所需時(shí)間可達(dá)賦值操作的四倍。裝箱 u裝箱用于在渣滓回收堆中存儲值類型。裝箱是 值類型到 object 類型或到此值類型所實(shí)現(xiàn)的任何接口類型的隱式轉(zhuǎn)換。對值類型裝箱會在堆中分配一個(gè)對象實(shí)例,并將該值復(fù)制到新的對象中。 int i = 123; object o = (object)i; 裝箱u上面哪個(gè)例子結(jié)果是在堆棧上創(chuàng)建對象援用 o,而在堆上那么援用 int 類型的值。該值是賦給變量 i 的值類型值的一個(gè)副本。 裝箱u輸出 int i = 123; object o = i; i = 456; Syste

4、m.Console.WriteLine(“i=, i); System.Console.WriteLine(“o=, o); i=456; o=123; u原始值類型和裝箱的對象運(yùn)用不同的內(nèi)存位置,因此可以存儲不同的值。 取消裝箱u取消裝箱是從 object 類型到 值類型或從接口類型到實(shí)現(xiàn)該接口的值類型的顯式轉(zhuǎn)換。取消裝箱操作包括: u 1.檢查對象實(shí)例,以確保它是給定值類型的裝箱值。 u 2.將該值從實(shí)例復(fù)制到值類型變量中。表達(dá)式u表達(dá)式是由一個(gè)或多個(gè)操作數(shù)以及零個(gè)或零個(gè)以上的運(yùn)算符所組成的序列,可以經(jīng)過計(jì)算得到一個(gè)值、對象、方法或命名空間等結(jié)果。表達(dá)式可以包含文本值、方法調(diào)用、運(yùn)算符及其

5、操作數(shù),或簡單稱號。簡單稱號可以是變量、類型成員、方法參數(shù)、命名空間或類型的稱號。 u表達(dá)式可以運(yùn)用運(yùn)算符,而運(yùn)算符又可以將其他表達(dá)式用作參數(shù),或者運(yùn)用方法調(diào)用,而方法調(diào)用的參數(shù)又可以是其他方法調(diào)用,因此表達(dá)式既可以非常簡單,也可以非常復(fù)雜。(x 5) | (x 20) & (x 25) System.Convert.ToInt32(35)表達(dá)式值u在大部分運(yùn)用表達(dá)式的上下文中,例如在語句或方法參數(shù)中,表達(dá)式應(yīng)計(jì)算為某個(gè)值。假設(shè) x 和 y 是整數(shù),表達(dá)式 x + y 將計(jì)算為一個(gè)數(shù)值。表達(dá)式 new MyClass() 計(jì)算為對 MyClass 對象的新實(shí)例的援用。表達(dá)式 myCla

6、ss.ToString() 計(jì)算為一個(gè)字符串,由于字符串是該方法的前往類型。然而,雖然命名空間稱號歸類為表達(dá)式,但它不計(jì)算為值,因此永遠(yuǎn)不能作為任何表達(dá)式的最終結(jié)果。命名空間稱號不能傳送給方法參數(shù),不能用在新表達(dá)式中,也不能賦值給變量。命名空間稱號只能用作較大表達(dá)式的子表達(dá)式。同樣如此的還有類型與 System.:.Type 對象不同、方法組稱號與特定方法不同以及事件 add 和 remove 訪問器。 運(yùn)算符 u運(yùn)算符就是表達(dá)式中的符號。增增 / 減減算術(shù)算術(shù)關(guān)系關(guān)系相等相等條件條件賦值賦值 + -* / % + - = != & | ?: = *= /= %= += -= = &a

7、mp;= = |= 運(yùn)算符詳解u運(yùn)算符分:u 1.“一元運(yùn)算符。u 2. “二元運(yùn)算符。u 3.算術(shù)運(yùn)算符。u 4.條件運(yùn)算符。u 5.三元運(yùn)算符?!耙辉\(yùn)算符+x-x!xx+x-x(T)x標(biāo)識標(biāo)識求反求反邏輯求反邏輯求反按位求反按位求反前遞增前遞增前遞減前遞減將將 x 顯式轉(zhuǎn)換為類型顯式轉(zhuǎn)換為類型 T乘法,加法,移位運(yùn)算符*/%x + yx - y x y 乘法乘法除法除法余數(shù)余數(shù)相加、字符串串聯(lián)、委托相加、字符串串聯(lián)、委托組合組合相減、委托移除相減、委托移除左移左移右移右移關(guān)系和類型運(yùn)算符符x yx = yx is Tx as T小于小于大于大于小于或等于小于或等于大于或等于大于或等于假設(shè)

8、假設(shè) x 為為 T,那么前往,那么前往 True;否那么前往;否那么前往 False前往類型為前往類型為 T 的的 x,假設(shè),假設(shè) x 不是不是 T,那么前往,那么前往 null相等,賦值和匿名運(yùn)算符x = yx != y=x op= y(T x) = y等于等于不等于不等于賦值賦值復(fù)合賦值,支持的運(yùn)算符包括:復(fù)合賦值,支持的運(yùn)算符包括: +=、 -=、 *=、 /=、 %=、 &=、 |=、 !=、 = 匿名函數(shù)匿名函數(shù)lambda 表達(dá)式表達(dá)式邏輯、條件和 null 運(yùn)算符x & y x yx | yx & yx | yX ?yx ?: y : z 整型按位整型按位

9、“與,布爾型邏輯與,布爾型邏輯“與與 整型按位整型按位“異或,布爾型邏輯異或,布爾型邏輯“異或異或整型按位整型按位“或,布爾型邏輯或,布爾型邏輯“或或僅當(dāng)僅當(dāng) x 為為 True 時(shí)計(jì)算時(shí)計(jì)算 y僅當(dāng)僅當(dāng) x 為為 False 時(shí)計(jì)算時(shí)計(jì)算 y假設(shè)假設(shè) x 為為 Null 那么計(jì)算結(jié)果為那么計(jì)算結(jié)果為 y,否那么計(jì)算結(jié)果為否那么計(jì)算結(jié)果為 x假設(shè)假設(shè) x 為為 True 那么計(jì)算結(jié)果為那么計(jì)算結(jié)果為 y,假設(shè)假設(shè) x 為為 False 那么計(jì)算結(jié)果為那么計(jì)算結(jié)果為 z 運(yùn)算符的優(yōu)先級u按照運(yùn)算符的優(yōu)先級計(jì)算表達(dá)式。u可以運(yùn)用圓括號控制運(yùn)算的順序。u左結(jié)合和右結(jié)合。u 1.一切二元運(yùn)算符都是左結(jié)

10、合的。 u 2.賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合的。10 + 20 / 5結(jié)果是 14(10 + 20) / 5 結(jié)果是 610 + (20 / 5) 結(jié)果是 14 可重載運(yùn)算符uC# 允許用戶定義的類型經(jīng)過運(yùn)用 operator 關(guān)鍵字定義靜態(tài)成員函數(shù)來重載運(yùn)算符。但不是一切的運(yùn)算符都可被重載。u比較運(yùn)算符假設(shè)重載必需成對重載;也就是說,假設(shè)重載 =,也必需重載 !=??芍剌d運(yùn)算符運(yùn)算符可重載性+、 -、 !、 、 +、 -、 true 和 false可以重載這些一元運(yùn)算符。+、 -、 *、 /、 %、 &、 |、 、 可以重載這些二進(jìn)制運(yùn)算符。=、 !=、 、 = 比較運(yùn)算符可以重載

11、(但請參見本表后面的說明)。 &、 | 條件邏輯運(yùn)算符不能重載,但可使用能夠重載的 & 和 | 進(jìn)行計(jì)算。不能重載數(shù)組索引運(yùn)算符,但可定義索引器。()不能重載轉(zhuǎn)換運(yùn)算符,但可定義新的轉(zhuǎn)換運(yùn)算符+=、 -=、 *=、 /=、 %=、 &=、 |=、 =、 = 賦值運(yùn)算符不能重載,但 += 可使用 + 計(jì)算,等等。 =、 .、 ?:、 -、 new、 is、 sizeof、 typeof 不能重載這些運(yùn)算符。 可重載運(yùn)算符u假設(shè)要在自定義類中重載運(yùn)算符,您需求在該類中創(chuàng)建具有正確簽名的方法。該方法必需命名為“operator X,其中 X 是正在重載的運(yùn)算符的稱號或符號。一

12、元運(yùn)算符具有一個(gè)參數(shù),二元運(yùn)算符具有兩個(gè)參數(shù)。在每種情況下,參數(shù)的類型必需與聲明該運(yùn)算符的類或構(gòu)造的類型一樣。public static Complex operator +(Complex c1, Complex c2)操作符u操作符就是特殊的運(yùn)算符?u括號操作符u 格式u點(diǎn)操作符u 格式 E.I) u 其中E是根本表達(dá)式或者預(yù)定義類型,I是一個(gè)標(biāo)識符。 C+里除了“.之外還有“: “-,C#里用點(diǎn)操作符來替代。比如一個(gè)類T有成員變量M,在C+里用T:M來援用,C#里用T.M來援用。另一點(diǎn)不同的是,C里預(yù)定義類型也是從Object類派生出來的,因此也定義了成員變量,比如,I是一個(gè)short類

13、型的變量,那么I.ToInt()操作將前往一個(gè)Int類型的值。操作符unew操作符操作符u 格式:格式: a、 new 類型類型(參數(shù)列表參數(shù)列表)u b、new 數(shù)組類型初始化列表數(shù)組類型初始化列表u c、new 代表類型表達(dá)式代表類型表達(dá)式utypeof操作符操作符u 該操作前往一個(gè)類型對應(yīng)的該操作前往一個(gè)類型對應(yīng)的system.type,如:如:u typeof(int); typeof(System.Int32); typeof(string);u 各自的結(jié)果為各自的結(jié)果為int32,int32,string。typeof只對只對類型操作,不能對變量操作,例如,類型操作,不能對變量操作

14、,例如,“int I;typeof(I);是不合法的。;是不合法的。操作符usizeof操作符u 該操作可獲得一個(gè)類型所占用的空間大小,以字節(jié)為單位。該操作符用在unsafe模塊中,如u Unsafeu S=sizeof(int);u u 或者在調(diào)用該操作符的函數(shù)中運(yùn)用該前綴。流程控制u程序所執(zhí)行的操作以“語句表達(dá)。u常見操作包括聲明變量、賦值、調(diào)用方法、循環(huán)訪問集合,以及根據(jù)給定條件分支到一個(gè)或另一個(gè)代碼塊。u語句在程序中的執(zhí)行順序稱為“控制流或“執(zhí)行流。根據(jù)程序?qū)\(yùn)轉(zhuǎn)時(shí)所收到的輸入的呼應(yīng),在程序每次運(yùn)轉(zhuǎn)時(shí)控制流能夠有所不同。uC#的控制語句分為兩個(gè)主要部分:選擇語句和循環(huán)語句。選擇語句u選

15、擇語句可以根據(jù)布爾表達(dá)式的值,有選擇性的執(zhí)行程序的某一部分。u在C# 中的條件語句有 if 和 switch 兩種u if 適宜兩個(gè)分支判別。u switch 適宜多個(gè)分支判別。 IF語句uIf語句是最先且最常用到的語句,內(nèi)含語句能否被執(zhí)行取決于布爾表達(dá)式;u語法:if ( 布爾表達(dá)式 ) 語句塊1;else 語句塊2;uelse 部分可選uif else 可以嵌套IF語句u例如:if ( sales 10000 ) bonus = 0.05 * sales;else bonus = 0;u運(yùn)算符?:是 if else 語句的縮略方式 bonus = (sales1000)? (0.05 *

16、sales):0;Switch語句uSwitch語句和if語句相比, Switch語句有一個(gè)控制表達(dá)式,而且內(nèi)含語句按它們所關(guān)聯(lián)的控制表達(dá)式的常量運(yùn)轉(zhuǎn)。u語法:switch 控制表達(dá)式 case value1 : 語句; break; case value2 : 語句; break; default: 語句; break; Switch語句uSwitch語句中的控制表達(dá)式所允許的數(shù)據(jù)類型為:sbyte,byte,short,ushort,uint,u ulong,char,string或者枚舉類型,只需使其它不同數(shù)據(jù)類型能隱式的轉(zhuǎn)換成上述任何類型,用它做控制表達(dá)式都可以。Switch語句uSw

17、itch語句按如下順序執(zhí)行:u 1.控制表達(dá)式求值u 2.假設(shè)case標(biāo)簽后的常量表達(dá)式符合控制語句所求出的值,內(nèi)含語句被執(zhí)行。u 3.假設(shè)沒有常量表達(dá)式符合控制語句,在default標(biāo)簽內(nèi)的內(nèi)含語句被執(zhí)行。u 4.假設(shè)沒有一個(gè)符合case標(biāo)簽,且沒有default標(biāo)簽,控制轉(zhuǎn)向switch語段的終了端。u 5.可以在swtich語句中運(yùn)用goto標(biāo)簽和goto defaultSwitch語句u例如:switch (nRndNumber) case 1:/什么也不做 break; case 2: goto case 3; case 3: Console.WriteLine(Handler fo

18、r 2 and 3); break; case 4: goto default;/ everything beyond a goto will be warned as/ unreachable code default: Console.WriteLine(Random number 0, nRndNumber);循環(huán)語句u循環(huán)語句當(dāng)需求反復(fù)執(zhí)行某些語句段的時(shí)候,根據(jù)當(dāng)前不同的義務(wù),C#提供4個(gè)不同的循環(huán)語句選擇供他運(yùn)用。u 1.For語句.u 2.Foreach語句.u 3.While語句.u 4.Do語句.For語句uFor語句u 當(dāng)他預(yù)先知道一個(gè)內(nèi)含語句要執(zhí)行多少次的時(shí)候,運(yùn)用For語

19、句特別有用。u 常規(guī)語法允許反復(fù)地執(zhí)行內(nèi)含語句(和循環(huán)表達(dá)式):u For(初試化;條件;循環(huán)) 內(nèi)含語句 u 注:初試化,條件和循環(huán)是可選的。假設(shè)忽略了條件,他能夠就產(chǎn)生了一個(gè)死循環(huán),要用到跳轉(zhuǎn)語句(break或goto)才干退出。For語句u先執(zhí)行初始化表達(dá)式,此部分只執(zhí)行一次。u判別條件表達(dá)式,假設(shè)滿足條件那么執(zhí)行循環(huán)體;否那么跳出for 循環(huán)。u每次循環(huán)語句執(zhí)行完后要執(zhí)行一次迭代,并重新判別循環(huán)條件。u例如:for (int i = 0; i 0; j -= 10 ) Console.WriteLine(j = 0, j);Break, continue ,goto, returnub

20、reak語句u break語句用于跳出和終止整個(gè)循環(huán)。ucontinue語句u 終止當(dāng)次循環(huán),開場下一次迭代和循環(huán)并不終止整個(gè)循環(huán)。ugoto語句u goto語句用于將控制權(quán)傳送給由標(biāo)號闡明的語句。ureturn語句u Return語句將控制權(quán)前往給包含該return語句的函數(shù)成員的調(diào)用程序。Foreach語句uForeach語句曾經(jīng)在在語句曾經(jīng)在在VB中存在很久的一個(gè)中存在很久的一個(gè)功能是經(jīng)過運(yùn)用功能是經(jīng)過運(yùn)用FOR Each語句搜集枚舉。語句搜集枚舉。C#經(jīng)過經(jīng)過foreach語句語句,也有一個(gè)用來搜集枚舉的命也有一個(gè)用來搜集枚舉的命令令:u foreach(表達(dá)式中的類型標(biāo)識符表達(dá)式中的

21、類型標(biāo)識符)內(nèi)含語句內(nèi)含語句循環(huán)變量有類型和標(biāo)識符聲明循環(huán)變量有類型和標(biāo)識符聲明,且表達(dá)式與搜且表達(dá)式與搜集相對應(yīng)。循環(huán)變量代表循環(huán)正在為之運(yùn)轉(zhuǎn)的集相對應(yīng)。循環(huán)變量代表循環(huán)正在為之運(yùn)轉(zhuǎn)的搜集元素。搜集元素。Foreach語句uforeach語句允許我們延續(xù)訪問數(shù)組中的每一個(gè)元素。u例如:foreach (int i in arr) if (i%2=0) even+; else odd+; While(條件條件)內(nèi)含語句內(nèi)含語句uWhile(條件)內(nèi)含語句。u 條件語句-它也是一個(gè)布爾表達(dá)式-控制內(nèi)含語句被執(zhí)行的次數(shù)。他可以運(yùn)用break和continue語句來控制while語句中執(zhí)行語句,它的運(yùn)轉(zhuǎn)方式同在for語句中的完全一樣。While(條件條件)內(nèi)含語句內(nèi)含語句u當(dāng)不知道循環(huán)執(zhí)行的次數(shù)時(shí),可以運(yùn)用while 。u例如:while ( command != “Exi

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論