![C面向?qū)ο蟪绦蛟O(shè)計(jì)知識(shí)點(diǎn)匯集_第1頁(yè)](http://file4.renrendoc.com/view4/M00/0D/1A/wKhkGGZS31qATOdhAAD5w75LTT0865.jpg)
![C面向?qū)ο蟪绦蛟O(shè)計(jì)知識(shí)點(diǎn)匯集_第2頁(yè)](http://file4.renrendoc.com/view4/M00/0D/1A/wKhkGGZS31qATOdhAAD5w75LTT08652.jpg)
![C面向?qū)ο蟪绦蛟O(shè)計(jì)知識(shí)點(diǎn)匯集_第3頁(yè)](http://file4.renrendoc.com/view4/M00/0D/1A/wKhkGGZS31qATOdhAAD5w75LTT08653.jpg)
![C面向?qū)ο蟪绦蛟O(shè)計(jì)知識(shí)點(diǎn)匯集_第4頁(yè)](http://file4.renrendoc.com/view4/M00/0D/1A/wKhkGGZS31qATOdhAAD5w75LTT08654.jpg)
![C面向?qū)ο蟪绦蛟O(shè)計(jì)知識(shí)點(diǎn)匯集_第5頁(yè)](http://file4.renrendoc.com/view4/M00/0D/1A/wKhkGGZS31qATOdhAAD5w75LTT08655.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C#面向?qū)ο蟪绦蛟O(shè)計(jì)知識(shí)點(diǎn)匯集第一章:C#入門1.namespace關(guān)鍵字namespace即命名空間,是定義命名空間的關(guān)鍵字,命名空間包含類,是類的組織方式。namespace命名空間名{…//類的定義}2.using關(guān)鍵字using關(guān)鍵字用于導(dǎo)入命名空間using命名空間名;3.class關(guān)鍵字class即類,是定義類的關(guān)鍵字。C#中必須用類來組織程序的變量和方法。4.Main()方法C#程序必須且只能包含一個(gè)Main()方法,它是程序的入口點(diǎn)。staticvoidMain(string[]args){}staticvoidMain(){}staticintMain(string[]args){}staticintMain(){}5.行輸出方法語(yǔ)句“Console.WriteLine("Hello.NET!");”的功能是向顯示屏輸出雙引號(hào)之間的字符串。語(yǔ)句“Console.ReadLine();”的功能是輸入一個(gè)字符串6.C#程序結(jié)構(gòu)C#程序的組成要素如下:1)命名空間:命名空間包含一個(gè)或多個(gè)類。2)類。3)方法:方法必須包含在某一個(gè)類中,作為類的一個(gè)成員,每個(gè)程序有且僅有一個(gè)Main()方法。4)語(yǔ)句:語(yǔ)句是C#應(yīng)用程序中執(zhí)行操作的命令。C#中的語(yǔ)句必須用分號(hào)“;”結(jié)束。5)關(guān)鍵字:關(guān)鍵字也叫保存字,是對(duì)C#有特定意義的字符串。6)大括號(hào):在C#中,括號(hào)“{”和“}”是一種范圍標(biāo)志,表達(dá)代碼層次的一種方式。
7.C#程序書寫格式1)縮進(jìn)2)字母大小寫C#是大小寫敏感的語(yǔ)言,它把同一字母的大小寫當(dāng)作兩個(gè)不同的字符對(duì)待。3)程序注釋(1)單行注釋,以雙斜線“//”開始,一直到本行尾部,均為注釋內(nèi)容。(2)多行注釋,以“/*”開始,以“*/”結(jié)束,可以注釋多行,也可以注釋一行代碼中間的一部分,比較靈活。(3)文檔注釋,使用“///”,若有多行文檔注釋,每一行都用“///”開頭。8.Console類Console類是System命名空間中預(yù)定義的一個(gè)類,用于實(shí)現(xiàn)控制臺(tái)的基本輸入輸出。編寫一個(gè)控制臺(tái)應(yīng)用程序,輸入字符串“Ilovethisgame!”,在屏幕上輸出。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceHello.NET{classProgram{staticvoidMain(string[]args){Console.WriteLine("IlovethisGame!");}}}相關(guān)知識(shí)及注意事項(xiàng)1.對(duì)象、類、屬性和方法類和對(duì)象2)屬性每個(gè)對(duì)象都有自己的特性和行為,對(duì)象的靜態(tài)特性稱為對(duì)象的屬性3)方法方法是對(duì)象的行為特性,是一段可以完畢特定功能的代碼2.事件和事件驅(qū)動(dòng)事件就是預(yù)先定義好的、能被對(duì)象辨認(rèn)的動(dòng)作。通過隨時(shí)響應(yīng)用戶或系統(tǒng)觸發(fā)的事件,并做出相應(yīng)響應(yīng)的機(jī)制就叫做事件驅(qū)動(dòng)機(jī)制。3.窗體對(duì)象4.控件對(duì)象按鈕控件按鈕(Button)控件用于接受用戶的操作信息,激發(fā)相應(yīng)的事件,按鈕是用戶與程序交互的重要方法之一。文本框控件文本框(TextBox)控件用于獲取用戶輸入的信息或向用戶顯示文本信息,圖1.17用于顯示信息的白色框就是文本框5.控件的基本操作有兩種方法:第一種是按住Shift鍵或Ctrl鍵不放,然后單擊每個(gè)要選擇的控件;第二種是把光標(biāo)移到窗體中的適當(dāng)位置,然后拖動(dòng)鼠標(biāo)畫出一個(gè)矩形,選中矩形內(nèi)的控件(涉及邊線所通過的控件)。1.填空題(1).NET框架具有兩個(gè)重要組件:____________________和____________________。(2)使用VS.NET開發(fā)的每一個(gè)應(yīng)用程序稱為__________,它可以涉及一個(gè)或多個(gè)__________。(3)命名空間是類的組織方式,C#提供了關(guān)鍵字__________來聲明命名空間,提供了關(guān)鍵字____________________來導(dǎo)入命名空間;假如要使用某個(gè)命名空間中的類,還需要添加對(duì)該命名空間所在__________的引用。(4)C#語(yǔ)言程序必須包含并且只能包含一個(gè)的方法(函數(shù))是__________,它是程序的入口點(diǎn)。(5)C#程序中的語(yǔ)句必須以__________作為語(yǔ)句結(jié)束符。(6)Console類是System命名空間中的一個(gè)類,用于實(shí)現(xiàn)控制臺(tái)的基本輸入輸出,該類中有兩個(gè)常用的方法,一個(gè)是功能為“輸出一行文本”的方法____________________,另一個(gè)是功能為“輸入一行文本”的方法____________________。2.選擇題(1)下面__________是C#中的單行注釋。A./*注釋內(nèi)容*/B.//注釋內(nèi)容C.///注釋內(nèi)容D.Note注釋內(nèi)容(2)C#中以__________作為源文獻(xiàn)的擴(kuò)展名。A..cB..cppC..csD..exe(3)關(guān)于C#程序書寫格式,以下說法錯(cuò)誤的是___.A.縮進(jìn)在程序中是必須的B.C#是大小寫敏感的語(yǔ)言,它把同一字母的大小寫當(dāng)作兩個(gè)不同的字符對(duì)待C.注釋是給程序員看的,不會(huì)被編譯,也不會(huì)生成可執(zhí)行代碼D.在C#中,大括號(hào)“{”和“}”是一種范圍標(biāo)志,大括號(hào)可以嵌套3.簡(jiǎn)答題(1)簡(jiǎn)述C#程序的組成要素。答:C#程序的組成要素如下:命名空間、類、方法、語(yǔ)句、關(guān)鍵字、大括號(hào)“{”和“}”。(2)簡(jiǎn)述Windows應(yīng)用程序編程環(huán)節(jié)。答:在VS.NET中開發(fā)Windows窗體應(yīng)用程序的環(huán)節(jié)如下:
新建項(xiàng)目;
設(shè)計(jì)程序界面,涉及添加控件和設(shè)立控件屬性;
編寫代碼;
保存程序;
運(yùn)營(yíng)調(diào)試程序。(3)簡(jiǎn)述對(duì)事件驅(qū)動(dòng)機(jī)制的理解。答:當(dāng)用戶或系統(tǒng)觸發(fā)事件時(shí),對(duì)象就會(huì)響應(yīng)事件,實(shí)現(xiàn)特定的功能,這種通過隨時(shí)響應(yīng)用戶或系統(tǒng)觸發(fā)的事件,并做出相應(yīng)響應(yīng)的機(jī)制就叫做事件驅(qū)動(dòng)機(jī)制。響應(yīng)事件時(shí)執(zhí)行的代碼稱為事件解決程序。開發(fā)應(yīng)用程序時(shí)編程人員的重要工作之一就是針對(duì)控件也許被觸發(fā)的事件設(shè)計(jì)適當(dāng)?shù)氖录鉀Q程序。第二章:C#語(yǔ)法基礎(chǔ)1.常量與變量有的量在過程中不起變化,就把其稱為常量;有的量在過程中是變化的,也就是可以取不同的數(shù)值,就把其稱為變量。在C#中程序設(shè)計(jì)人員可以根據(jù)程序設(shè)計(jì)的需要,給存放常量和變量的內(nèi)存地址取一個(gè)故意義的名字,分別叫做常量名和變量名??梢酝ㄟ^const關(guān)鍵字來定義常量,語(yǔ)法如下:const數(shù)據(jù)類型標(biāo)記符常量名=數(shù)值或表達(dá)式;說明一旦定義常量,就要賦初值,且這個(gè)常量的值在程序運(yùn)營(yíng)過程中是不允許改變的。定義常量時(shí),表達(dá)式中的運(yùn)算符對(duì)象只允許出項(xiàng)常量和常數(shù),不允許出現(xiàn)變量。(3)不管常量和變量,都必須先定義后使用。變量的定義和賦值語(yǔ)法如下:數(shù)據(jù)類型標(biāo)記符變量名[=數(shù)值或表達(dá)式];說明:(1)語(yǔ)法中的[]表達(dá)可選,就是說[]中的內(nèi)容寫或不寫都不會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。(2)在對(duì)變量進(jìn)行賦值時(shí),數(shù)值或表達(dá)式的值類型必須同變量的類型相同。2.C#變量命名規(guī)則為變量起名時(shí)要遵守C#語(yǔ)言的規(guī)定。(1)變量名必須以字母開頭。(2)變量名只能由字母、數(shù)字和下劃線組成,而不能包含空格、標(biāo)點(diǎn)符號(hào)、運(yùn)算符等其他符號(hào)。(3)變量名不能與C#中的關(guān)鍵字名稱相同。(4)變量名不能與C#中的庫(kù)函數(shù)名稱相同。(5)允許在變量名前加前綴“@”。說明:可以使用前綴“@”加上關(guān)鍵字作為變量的名稱。這重要是為了與其他語(yǔ)言進(jìn)行交互時(shí)避免沖突。由于前綴“@”事實(shí)上并不是名稱的一部分,其他的編程語(yǔ)言就會(huì)把它作為一個(gè)普通的變量名。在其他情況下,不推薦使用前綴“@”作為變量名的一部分。3.變量的定義和賦值語(yǔ)法如下:數(shù)據(jù)類型標(biāo)記符變量名[=數(shù)值或表達(dá)式];說明:(1)語(yǔ)法中的[]表達(dá)可選,就是說[]中的內(nèi)容寫或不寫都不會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。(2)在對(duì)變量進(jìn)行賦值時(shí),數(shù)值或表達(dá)式的值類型必須同變量的類型相同。假如數(shù)值或表達(dá)式的值類型與變量的類型不相同,但數(shù)值或表達(dá)式的值類型所表達(dá)的數(shù)值范圍比被賦值變量的類型所表達(dá)的范圍要小,是允許賦值的。事實(shí)上C#在內(nèi)部進(jìn)行了一次數(shù)值類型的轉(zhuǎn)換,這種轉(zhuǎn)換叫隱式轉(zhuǎn)換。關(guān)于數(shù)據(jù)類型和隱式轉(zhuǎn)換將在后面講述。數(shù)值類型涉及:整數(shù)類型、字符類型、浮點(diǎn)數(shù)類型、布爾類型、結(jié)構(gòu)類型、枚舉類型。引用類型涉及:類類型(如string類)、數(shù)組類型、接口類型、代理類型。C#的數(shù)據(jù)類型體系如圖所示。4.整數(shù)類型C#有8種整數(shù)類型:(1)短字節(jié)型(sbyte)有符號(hào)8位整數(shù)(2)字節(jié)型(byte)無(wú)符號(hào)8位整數(shù)(3)短整型(short)有符號(hào)16位整數(shù)(4)無(wú)符號(hào)短整型(ushort)無(wú)符號(hào)16位整數(shù)(5)整型(int)有符號(hào)32位整數(shù)(6)無(wú)符號(hào)整型(uint)無(wú)符號(hào)32位整數(shù)(7)長(zhǎng)整型(long)有符號(hào)64位整數(shù)(8)無(wú)符號(hào)長(zhǎng)整型(ulong)無(wú)符號(hào)64位整數(shù)5.浮點(diǎn)數(shù)類型C#支持3種基本浮點(diǎn)數(shù):(1)表達(dá)單精度的float,精度7位(2)表達(dá)雙精度的double,精度15-16位(3)表達(dá)財(cái)務(wù)計(jì)算用途的decimal,精度29位在程序中書寫一個(gè)十進(jìn)制的數(shù)值常數(shù)時(shí),C#默認(rèn)按照如下方法判斷一個(gè)數(shù)值常數(shù)屬于哪種C#數(shù)值類型。(1)假如一個(gè)數(shù)值常數(shù)不帶小數(shù)點(diǎn),如3456,則這個(gè)常數(shù)的類型是個(gè)整數(shù)。(2)對(duì)于一個(gè)屬于整型的數(shù)值常數(shù),C#按如下順序判斷該數(shù)的類型:int,uint,long,ulong。(3)假如一個(gè)數(shù)值常數(shù)帶小數(shù)點(diǎn),如1.2,則該常數(shù)的類型是浮點(diǎn)型中的double類型??梢酝ㄟ^在數(shù)值常數(shù)后加后綴的方法來指定數(shù)值常數(shù)的類型。u(或U)后綴:加在整型常數(shù)后面,代表該常數(shù)是uint類型或ulong類型,具體哪種,由常數(shù)的實(shí)際值決定。C#優(yōu)先匹配uint類型。(2)
l(或L)后綴:加在整型常數(shù)后面,代表該常數(shù)是long類型或ulong類型,具體哪種,由常數(shù)的實(shí)際值決定。C#優(yōu)先匹配long類型。(3)
ul(或uL、Ul、UL、lu、lU、LU)后綴:加在整型常數(shù)后面,代表該常數(shù)是ulong類型。(4)
f(或F)后綴:加在任何一個(gè)數(shù)值常數(shù)后面,代表該常數(shù)是float類型。(5)
d(或D)后綴:加在任何一個(gè)數(shù)值常數(shù)后面,代表該常數(shù)是double類型。(6)
m(或M)后綴:加在任何一個(gè)數(shù)值常數(shù)后面,代表該常數(shù)是decimal類型。假如所指定的數(shù)據(jù)符號(hào)不能用指定類型表達(dá),在編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤。當(dāng)用兩種浮點(diǎn)型執(zhí)行運(yùn)算時(shí),可以產(chǎn)生以下的值:正零和負(fù)零、+Infinity和-Infinity(正無(wú)窮大或負(fù)無(wú)窮大)、NaN(非數(shù)字值Not-a-Number)。6.字符類型用來表達(dá)字符數(shù)據(jù)常量時(shí),共有以下幾種不同的表達(dá)方式。(1)用單引號(hào)將單一個(gè)字符涉及起來,例如:'A'、'n'、'u'。(2)用本來的數(shù)值編碼來表達(dá)字符數(shù)據(jù)常量,例如:'a'是97,'v'是118。(3)還可以直接通過十進(jìn)制轉(zhuǎn)義符(前綴\x)或Unicode表達(dá)法(前綴\u)表達(dá)字符數(shù)據(jù)常量,例如:'\x0032'、'\u5495'。(4)C#提供了轉(zhuǎn)義符,用來在程序中指代特殊的控制字符:(見p36)\’\’’\\\0\r\t7.字符串類型字符串類型是一個(gè)char類型的序列。定義一個(gè)字符串的語(yǔ)法如下:string變量名[="字符串值"];例:stringstr;stringstr=“c#”;stringstr=Console.ReadLine();8.布爾類型布爾類型數(shù)據(jù)用于表達(dá)邏輯真和邏輯假,布爾類型的類型標(biāo)記符是bool。布爾類型只有兩個(gè)值:true和false。通常占用1個(gè)字節(jié)的存儲(chǔ)空間布爾類型尚有一個(gè)特點(diǎn):不能進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。9.枚舉類型枚舉類型是一種用戶自定義的數(shù)值類型,它提供了一種簡(jiǎn)便可以創(chuàng)建一組有結(jié)構(gòu)的符號(hào)來表達(dá)常量值,有助于程序設(shè)計(jì)人員更好地調(diào)試和維護(hù)程序。1)枚舉類型的定義枚舉定義用于定義新的枚舉類型。枚舉聲明以關(guān)鍵字enum開始,然后定義枚舉的名稱、可訪問性、基類型和成員。語(yǔ)法如下:[訪問修飾符]enum枚舉標(biāo)記名[:枚舉基類型]默認(rèn)的基類型為int{枚舉成員[=整型常數(shù)],[枚舉成員[=整型常數(shù)],…]}[;]枚舉成員不能同名2)枚舉成員的賦值在定義的枚舉類型中,每一個(gè)枚舉成員都有一個(gè)常量值與其相應(yīng),默認(rèn)情況下枚舉的基類型為int,并且規(guī)定第一個(gè)枚舉成員的取值為0,它后面的每一個(gè)枚舉成員的值加1遞增。(1)假如某一枚舉成員賦值了,那么枚舉成員的值就以賦的值為準(zhǔn)。在它后面的每一個(gè)枚舉成員的值加1遞增,直到下一個(gè)賦值枚舉成員出現(xiàn)為止。(2)每個(gè)枚舉成員都有一個(gè)關(guān)聯(lián)的常量值。該值的類型是包含該值的枚舉的基類型。每個(gè)枚舉成員的常量值必須在該枚舉的基類型的范圍內(nèi)。(3)多個(gè)枚舉成員可以共享相同的常量值。3)枚舉成員的訪問在C#中可以通過枚舉名和枚舉變量這兩種方式來訪問枚舉成員。(1)通過枚舉名訪問枚舉成員的形式如下:枚舉名.枚舉成員;(2)在通過枚舉變量訪問枚舉成員之前,一方面要定義一個(gè)枚舉類型變量。語(yǔ)法如下:枚舉類型名變量名;然后再通過枚舉變量訪問枚舉成員,語(yǔ)法如下:枚舉變量名.枚舉成員10.結(jié)構(gòu)類型結(jié)構(gòu)類型也是一種用戶自定義的數(shù)值類型,它是指一組由各種不同數(shù)據(jù)類型的相關(guān)數(shù)據(jù)信息組合在一起而形成的組合類型。把一系列相關(guān)的變量組織成為一個(gè)單一實(shí)體的過程,稱為生成結(jié)構(gòu)的過程。這個(gè)單一實(shí)體的類型就叫做結(jié)構(gòu)類型。1)結(jié)構(gòu)的定義結(jié)構(gòu)的定義語(yǔ)法如下:[訪問修飾符]struct結(jié)構(gòu)標(biāo)記名[:基接口名列表]{//結(jié)構(gòu)成員定義}說明:(1)結(jié)構(gòu)成員涉及各種數(shù)據(jù)類型的變量、構(gòu)造函數(shù)、方法、屬性、索引器。
(2)結(jié)構(gòu)可以實(shí)現(xiàn)接口。舉例1:結(jié)構(gòu)的定義structjudge{stringname;floatscore;}2)結(jié)構(gòu)類型成員的訪問用結(jié)構(gòu)變量訪問結(jié)構(gòu)成員。在通過結(jié)構(gòu)變量訪問結(jié)構(gòu)成員之前一方面要定義一個(gè)結(jié)構(gòu)類型變量。語(yǔ)法如下:結(jié)構(gòu)類型名變量名;然后再通過結(jié)構(gòu)變量訪問結(jié)構(gòu)成員,語(yǔ)法如下:結(jié)構(gòu)變量名.結(jié)構(gòu)成員;舉例2:結(jié)構(gòu)類型變量的定義judgejudge1;judge1.name=Console.ReadLine();3)結(jié)構(gòu)與類的區(qū)別(1)兩者的類型不同,結(jié)構(gòu)是數(shù)值類型,類是引用類型。(2)結(jié)構(gòu)的靜態(tài)字段可以初始化,結(jié)構(gòu)實(shí)例字段聲明還是不能使用初始值設(shè)定項(xiàng),而類都可以。(3)結(jié)構(gòu)不能聲明默認(rèn)構(gòu)造函數(shù)(沒有參數(shù)的構(gòu)造函數(shù))或析構(gòu)函數(shù),也就是說結(jié)構(gòu)可以聲明構(gòu)造函數(shù),但它們必須帶參數(shù),而類都可以。(4)結(jié)構(gòu)的實(shí)例化可以不使用new運(yùn)算符,而類都不可以而類的實(shí)例化都必須使用new運(yùn)算符
。(5)一個(gè)結(jié)構(gòu)不能從另一個(gè)結(jié)構(gòu)或類繼承,并且不能作為一個(gè)類的基。所有結(jié)構(gòu)都直接繼承自System.ValueType,而類繼承自System.Object。(ValueType派生自O(shè)bject,最終基類都是Object。)如何選擇使用結(jié)構(gòu)還是類,可以參照以下幾點(diǎn)。(1)堆棧的空間有限,對(duì)于大量的邏輯的對(duì)象,創(chuàng)建類要比創(chuàng)建結(jié)構(gòu)好一些。(2)結(jié)構(gòu)表達(dá)如點(diǎn)、矩形和顏色這樣的輕量對(duì)象,例如(3)在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),類是最佳的選擇。(4)大多數(shù)情況下該類型只是一些數(shù)據(jù)時(shí),結(jié)構(gòu)是最佳的選擇。11.類型轉(zhuǎn)換在程序設(shè)計(jì)中,有時(shí)要進(jìn)行數(shù)據(jù)類型的互相轉(zhuǎn)換,如被賦值的變量或方法的形式參數(shù)的類型與實(shí)際的對(duì)象類型不同,就需要進(jìn)行類型轉(zhuǎn)換。
C#中有兩種轉(zhuǎn)化方式:隱式轉(zhuǎn)換和顯示轉(zhuǎn)換。當(dāng)發(fā)生類型轉(zhuǎn)換時(shí),被賦值的變量或方法的形參的類型稱為目的類型,而實(shí)際對(duì)象的類型稱為源類型。1)隱式轉(zhuǎn)換當(dāng)發(fā)生類型轉(zhuǎn)換時(shí),假如在代碼中沒有明確指定目的類型,則稱為隱式轉(zhuǎn)換。也就是說隱式轉(zhuǎn)換是系統(tǒng)默認(rèn)的、不需要加以聲明就可以進(jìn)行的轉(zhuǎn)換。在隱式轉(zhuǎn)換過程中,編譯器不需要對(duì)轉(zhuǎn)換進(jìn)行具體的檢查就能安全地執(zhí)行轉(zhuǎn)換。小類型->大類型安全的轉(zhuǎn)換(不會(huì)丟失數(shù)據(jù))系統(tǒng)自動(dòng)完畢注意:(1)從int、uint或long到float的轉(zhuǎn)換以及從long到double的轉(zhuǎn)換的精度也許會(huì)減少,但數(shù)值大小不受影響。(2)不存在到char類型的隱式轉(zhuǎn)換。(3)不存在浮點(diǎn)型與decimal類型之間的隱式轉(zhuǎn)換。2)顯式轉(zhuǎn)換當(dāng)發(fā)生類型轉(zhuǎn)換時(shí),假如在代碼中明確指定目的類型,則稱為顯式轉(zhuǎn)換。顯式轉(zhuǎn)換也稱為強(qiáng)制型轉(zhuǎn)換,一般在不存在該類型的隱式轉(zhuǎn)換時(shí)才使用。語(yǔ)法格式如下:(類型標(biāo)記符)表達(dá)式這樣就可以將表達(dá)式的值的數(shù)據(jù)類型轉(zhuǎn)換為類型標(biāo)記符的類型。例如:(int)6.143//把float類型的6.143轉(zhuǎn)換為int類型大類型->小類型不安全的轉(zhuǎn)換(也許丟失數(shù)據(jù))顯式聲明3)負(fù)責(zé)數(shù)據(jù)類型轉(zhuǎn)換的Convert類Convert類用于將一個(gè)基本數(shù)據(jù)類型轉(zhuǎn)換為另一個(gè)基本數(shù)據(jù)類型,返回與指定類型的值等效的類型;受支持的源類型是Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime和String。。屬于顯示轉(zhuǎn)換常用于不同類型之間的數(shù)據(jù)轉(zhuǎn)換(1)從某數(shù)據(jù)類型到它自身的轉(zhuǎn)換只返回該數(shù)據(jù)類型,不實(shí)際執(zhí)行任何轉(zhuǎn)換。(2)無(wú)法產(chǎn)生故意義的結(jié)果的轉(zhuǎn)換引發(fā)InvalidCastException(指定的轉(zhuǎn)換無(wú)效)的異常,不實(shí)際執(zhí)行任何轉(zhuǎn)換。下列轉(zhuǎn)換會(huì)引發(fā)異常:從Char轉(zhuǎn)換為Boolean、Single、Double、Decimal或DateTime,以及從這些類型轉(zhuǎn)換為Char;尚有從DateTime轉(zhuǎn)換為除String之外的任何類型,以及從任何類型(String除外)轉(zhuǎn)換為DateTime。(3)任何數(shù)據(jù)類型(上面描述的數(shù)據(jù)類型除外)都可以與任何其他數(shù)據(jù)類型進(jìn)行互相轉(zhuǎn)換。4)數(shù)據(jù)類型轉(zhuǎn)換的Parse()方法每個(gè)數(shù)值數(shù)據(jù)類型都包含一個(gè)Parse()方法,它允許將字符串轉(zhuǎn)換成相應(yīng)的數(shù)值類型。例如:strings1=9,s2=9.423;intm=int.Parse(s1);//將s1轉(zhuǎn)換成整數(shù)類型Floatn=float.Parse(s2);//將s2轉(zhuǎn)換成浮點(diǎn)類型Random類中next方法的使用例子:Randomrd=newRandom();intn=rd.Next(100,500)這樣N就是一個(gè)100到500之間的一個(gè)隨機(jī)數(shù)。Math類中sqrt方法的使用Math.Sqrt(常量、變量或表達(dá)式);返回指定數(shù)字的平方根。運(yùn)算符是表達(dá)各種不同運(yùn)算的符號(hào)。表達(dá)式是由變量、常量、數(shù)值和運(yùn)算符組成的,是用運(yùn)算符將運(yùn)算對(duì)象連接起來的運(yùn)算式。表達(dá)式在通過一系列運(yùn)算后得到的結(jié)果就是表達(dá)式的結(jié)果,結(jié)果的類型是由參與運(yùn)算的操作數(shù)據(jù)的數(shù)據(jù)類型決定的。C#語(yǔ)言中有豐富的運(yùn)算符。在C#中運(yùn)算符的種類分為以下幾類。1.算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于各類數(shù)值運(yùn)算,涉及加(+)、減(-)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(--)共7種。其中%是求余運(yùn)算,例如:“x=7%3”,則x的值為1,由于7/3的余數(shù)為1。由算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來的式子叫做算術(shù)表達(dá)式。有一些特殊的運(yùn)算,例如開方、平方,C#沒有提供相應(yīng)的算術(shù)運(yùn)算符。但在System命名空間里的Math類提供了這樣的運(yùn)算。常用的方法有以下幾種。(1)Math.Abs(數(shù)據(jù)類型x):返回x的絕對(duì)值。(2)Math.pow(doublex,doubley):返回x的y次方。(3)Math.sqrt(doublex):返回x的開根號(hào)值。尚有一種產(chǎn)生隨機(jī)數(shù)的Random類,它的方法要用Random類的對(duì)象來調(diào)用。常用的方法有以下幾種。(1)Next():返回一個(gè)整數(shù)的隨機(jī)數(shù)。(2)Next(intmaxvalue):返回小于指定最大值的正隨機(jī)數(shù)。(3)Next(intminvalue,intmaxvalue):返回一個(gè)大于等于minvalue且小于maxvalue的整數(shù)隨機(jī)數(shù)。(4)NextDouble():返回一個(gè)0.0~1.0之間的double精度的浮點(diǎn)隨機(jī)數(shù)。2.關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于比較運(yùn)算,比較兩個(gè)值的大小。關(guān)系運(yùn)算符涉及大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)6種。關(guān)系運(yùn)算的結(jié)果類型是布爾類型。假如關(guān)系運(yùn)算兩邊的運(yùn)算對(duì)象是布爾類型的對(duì)象,那么true等于true,false等于false,而true是大于false的。由關(guān)系運(yùn)算符將運(yùn)算對(duì)象(表達(dá)式)連接起來的式子叫做關(guān)系表達(dá)式。3.邏輯運(yùn)算符邏輯運(yùn)算符用于邏輯運(yùn)算,涉及與(&&)、或(||)、非(!)共3種。邏輯運(yùn)算的結(jié)果類型是布爾類型,并且邏輯運(yùn)算兩邊的運(yùn)算對(duì)象的數(shù)據(jù)類型都為布爾類型。與運(yùn)算的結(jié)果為:只有兩個(gè)運(yùn)算對(duì)象都為true時(shí),結(jié)果才為true;只要有一個(gè)是false,結(jié)果就為false。或運(yùn)算的結(jié)果為:兩個(gè)運(yùn)算對(duì)象中只要有一個(gè)為true時(shí),結(jié)果就為true;只有兩個(gè)運(yùn)算對(duì)象都是false,結(jié)果才為false。非運(yùn)算的結(jié)果是原運(yùn)算對(duì)象的逆:假如原運(yùn)算對(duì)象是true,則運(yùn)算結(jié)果為false;假如原運(yùn)算對(duì)象是false,則運(yùn)算結(jié)果為true。由邏輯運(yùn)算符將運(yùn)算對(duì)象(邏輯值或表達(dá)式)連接起來的式子叫做邏輯表達(dá)式。4.位操作運(yùn)算符參與位操作運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。位操作運(yùn)算符涉及位非(~)、位與(&)、位或(|)、位異或(^)、左移(<<)、右移(>>)共6種。1)位邏輯非運(yùn)算位邏輯非運(yùn)算是單目的,只有一個(gè)運(yùn)算對(duì)象。位邏輯非運(yùn)算按位對(duì)運(yùn)算對(duì)象的值進(jìn)行非運(yùn)算,即:假如某一位等于0,就將其轉(zhuǎn)變?yōu)?;假如某一位等于1,就將其轉(zhuǎn)變?yōu)?。例如,對(duì)二進(jìn)制的10010001進(jìn)行位邏輯非運(yùn)算,結(jié)果等于01101110,用十進(jìn)制表達(dá)就是~145等于110;對(duì)二進(jìn)制的01010101進(jìn)行位邏輯非運(yùn)算,結(jié)果等于10101010。用十進(jìn)制表達(dá)就是~85等于176。2)位邏輯與運(yùn)算位邏輯與運(yùn)算是將兩個(gè)運(yùn)算對(duì)象按位進(jìn)行與運(yùn)算。與運(yùn)算的規(guī)則是:1與1等于1,1與0等于0。例如,10010001(二進(jìn)制)&11110000等于10010000(二進(jìn)制)。3)位邏輯或運(yùn)算位邏輯或運(yùn)算是將兩個(gè)運(yùn)算對(duì)象按位進(jìn)行或運(yùn)算?;蜻\(yùn)算的規(guī)則是:1或1等1,1或0等于1,0或0等于0。例如,10010001(二進(jìn))|11110000(二進(jìn)制)等于11110001(二進(jìn)制)。4)位邏輯異或運(yùn)算位邏輯異或運(yùn)算是將兩個(gè)運(yùn)算對(duì)象按位進(jìn)行異或運(yùn)算。異或運(yùn)算的規(guī)則是:1異或1等于0,1異或0等于1,0異或0等于0。即:相同得0,相異得1。例如,10010001(二進(jìn)制)^11110000(二進(jìn)制)等于01100001(二進(jìn)制)。5)位左移運(yùn)算位左移運(yùn)算是將整個(gè)數(shù)按位左移若干位,左移后空出的部分填0。例如,8位的byte型變量bytea=0x65(即二進(jìn)制的01100101),將其左移3位(a<<3)的結(jié)果是0x27(即二進(jìn)制的00101000)6)位右移運(yùn)算位右移運(yùn)算將整個(gè)數(shù)按位右移若干位,右移后空出的部分填0。例如,8位的byte型變量bytea=0x65(即二進(jìn)制的01100101)將其右移3位(a>>3)的結(jié)果是0x0c(即二進(jìn)制的00001100)。5.賦值運(yùn)算符賦值運(yùn)算符用于賦值運(yùn)算,就是將一個(gè)數(shù)據(jù)賦予一個(gè)變量,它分為3類:(1)簡(jiǎn)樸賦值(=)、(2)復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)(3)復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)共11種。算術(shù)表達(dá)式:由賦值運(yùn)算符將運(yùn)算對(duì)象(變量和表達(dá)式)連接起來的式子。6.條件運(yùn)算符條件運(yùn)算符是一個(gè)三目運(yùn)算符,用于條件求值(?:)。語(yǔ)法如下:邏輯表達(dá)式?語(yǔ)句1:語(yǔ)句2;說明:上述表達(dá)式先判斷邏輯表達(dá)式是true,還是false。假如是true,則執(zhí)行語(yǔ)句1;假如是false,則執(zhí)行語(yǔ)句2。由條件運(yùn)算符和表達(dá)式組成的式子叫做條件表達(dá)式。7.逗號(hào)運(yùn)算符用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。8.特殊運(yùn)算符有括號(hào)()、下標(biāo)[]等幾種。9.其他轉(zhuǎn)換用運(yùn)算符1)asas運(yùn)算符用于執(zhí)行引用類型的顯式類型轉(zhuǎn)換。假如要轉(zhuǎn)換的類型與指定類型兼容,轉(zhuǎn)換就會(huì)成功;假如類型不兼容,則返回null。語(yǔ)法如下:表達(dá)式as類型例如:objecto1=”SomeString”;objecto2=5;strings1=o1asstring;//類型兼容s1=”SomeString”strings2=o2asstring;//s2=null2)isis運(yùn)算符用于檢核對(duì)象的類型是否與給定類型兼容(對(duì)象是該類型,或是派生于該類型)。語(yǔ)法如下:表達(dá)式is類型例如:inti=10;boolx=iisint;//x=true3)sizeofsizeof運(yùn)算符用于獲得值類型的大小(以字節(jié)為單位)。語(yǔ)法如下:sizeof(類型標(biāo)記符)說明:sizeof運(yùn)算符僅合用于值類型,而不合用于引用類型。sizeof運(yùn)算符僅可用于unsafe模式。例如:unsafe{Console.WriteLine(“{0}”,sizeof(int));//結(jié)果是4,每個(gè)int類型變量占4個(gè)字節(jié)}4)checked和uncheckedchecked和unchecked運(yùn)算符用來控制整數(shù)類型算術(shù)運(yùn)算和互相轉(zhuǎn)換的溢出檢查。語(yǔ)法如下:checked(表達(dá)式)unchecked(表達(dá)式)說明:checked運(yùn)算符用來強(qiáng)制編譯器檢查是否溢出的問題;unchecked運(yùn)算符用來強(qiáng)制編譯器不檢查這方面的問題。10.運(yùn)算符的優(yōu)先級(jí)一個(gè)表達(dá)式中往往包含多種運(yùn)算符,那么哪個(gè)運(yùn)算符先執(zhí)行,哪個(gè)運(yùn)算符后執(zhí)行呢?在
C#中,把每個(gè)運(yùn)算符設(shè)立成不同的級(jí)別來決定運(yùn)算符執(zhí)行的先后順序,這個(gè)級(jí)別就叫做運(yùn)算符的優(yōu)先級(jí)。運(yùn)算符的優(yōu)先級(jí)高的就優(yōu)先執(zhí)行,運(yùn)算符的優(yōu)先級(jí)低的就后執(zhí)行。第3章:c#程序設(shè)計(jì)C#程序設(shè)計(jì)中有三大程序結(jié)構(gòu),分別為:順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)這3種程序結(jié)構(gòu)都是可以嵌套、組合使用的。順序結(jié)構(gòu)是由一系列的語(yǔ)句所構(gòu)成的,其中任何一條語(yǔ)句都會(huì)被執(zhí)行一次,并且執(zhí)行的順序是由程序的第一行一直執(zhí)行到結(jié)束為止。選擇結(jié)構(gòu)可以讓程序在執(zhí)行時(shí)可以選擇不同的操作,那么選擇的標(biāo)準(zhǔn)是根據(jù)指定的條件是否成立而擬定的。C#中有以下幾種語(yǔ)句來實(shí)現(xiàn)選擇結(jié)構(gòu)。1.if語(yǔ)句if語(yǔ)句根據(jù)條件判斷該執(zhí)行哪個(gè)選擇,可提供一種、兩種或多種選擇,但每次只會(huì)執(zhí)行一個(gè)選擇。(1)簡(jiǎn)樸的if語(yǔ)句,提供一種選擇,語(yǔ)法如下:if(條件){語(yǔ)句序列}//當(dāng)滿足條件,就執(zhí)行{語(yǔ)句序列},否則跳過if語(yǔ)句,執(zhí)行if語(yǔ)句后面的程序.(2)if-else語(yǔ)句,提供兩種選擇,語(yǔ)法如下:if(條件){語(yǔ)句序列1} //當(dāng)滿足條件時(shí)執(zhí)行else{語(yǔ)句序列2} //當(dāng)不滿足條件時(shí)執(zhí)行(3)elseif語(yǔ)句,提供多種選擇,語(yǔ)法如下:if(條件1){語(yǔ)句序列1}//當(dāng)滿足條件1時(shí)執(zhí)行,然后執(zhí)行elseif語(yǔ)句塊后面的程序elseif(條件2){語(yǔ)句序列2} //當(dāng)滿足條件2時(shí)執(zhí)行,然后執(zhí)行elseif語(yǔ)句塊后面的程序elseif(條件3){語(yǔ)句序列3} //當(dāng)滿足條件3時(shí)執(zhí)行,然后執(zhí)行elseif語(yǔ)句塊后面的程序… //還可以加任意個(gè)“elseif(條件){語(yǔ)句序列}”else{語(yǔ)句序列n+1} //當(dāng)所有條件都不滿足時(shí)執(zhí)行2.switch語(yǔ)句switch語(yǔ)句也是提供多種選擇的語(yǔ)句。語(yǔ)法如下:switch(表達(dá)式){case也許性的值1:語(yǔ)句序列1[break;]case也許性的值2:語(yǔ)句序列2[break;]...;[default:語(yǔ)句序列n+1break;]}if(score>=90)Console.WriteLine("優(yōu)秀!");elseif(score>=80)Console.WriteLine("良好!");elseif(score>=70)Console.WriteLine("一般!");elseif(score>=60)Console.WriteLine("及格!");elseConsole.WriteLine("不合格!");if(score>=90)c=‘a(chǎn)’;elseif(score>=80)c=‘b’;elseif(score>=70)c=‘c’;elseif(score>=60)c=‘d’;elsec=‘e’;switch(c){case‘a(chǎn)’:Console.WriteLine("優(yōu)秀!");break;case‘b’:Console.WriteLine("良好!");break;case‘c’:Console.WriteLine("一般!");break;case‘d’:Console.WriteLine("一般!");break;case‘e’:Console.WriteLine("一般!");break;執(zhí)行switch語(yǔ)句的環(huán)節(jié)為:(1)當(dāng)代碼執(zhí)行到此語(yǔ)句時(shí),先執(zhí)行switch后面()中的表達(dá)式。(2)然后將表達(dá)式的運(yùn)算結(jié)果與{}中case后面“也許性的值”逐個(gè)匹配,假如與某個(gè)“也許性的值”匹配成功,則進(jìn)入相相應(yīng)的case代碼段,假如匹配都不成功,則進(jìn)入default語(yǔ)句,執(zhí)行默認(rèn)代碼段。(3)假如沒有default語(yǔ)句,則跳出switch語(yǔ)句。其中,每個(gè)case代碼段內(nèi)都應(yīng)當(dāng)帶有一個(gè)break語(yǔ)句,用來從當(dāng)前選擇中跳出,假如沒有break語(yǔ)句,則不跳出選擇,執(zhí)行case后面的語(yǔ)句。1.Checked屬性Checked屬性是單選按鈕、復(fù)選框的一個(gè)屬性,它表達(dá)單選按鈕、復(fù)選框是否被選中。true表達(dá)單選按鈕、復(fù)選框被選中,false表達(dá)未被選中。2.Enabled屬性Enabled屬性允許在運(yùn)營(yíng)時(shí)使窗體和控件成為有效或無(wú)效。有效為true,無(wú)效為false。3.CheckedChanged事件當(dāng)Checked屬性值改變時(shí),觸發(fā)CheckedChanged事件。當(dāng)選中“普通會(huì)員”單選按鈕時(shí),就觸發(fā)了它的CheckedChanged事件,普通會(huì)員是不可選擇“贈(zèng)送禮品”的,所以設(shè)立“贈(zèng)送禮品”復(fù)選框的Enabled屬性為false。同理當(dāng)選中“VIP”單選按鈕時(shí),就觸發(fā)了它的CheckedChanged事件,VIP是可以選擇“贈(zèng)送禮品”的,所以設(shè)立“贈(zèng)送禮品”復(fù)選框的Enabled屬性為true。循環(huán)結(jié)構(gòu)是在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。1.while語(yǔ)句while語(yǔ)句先計(jì)算表達(dá)式的值,值為true則執(zhí)行循環(huán)體;反復(fù)執(zhí)行上述操作,直到表達(dá)式的值為false時(shí)止。語(yǔ)法如下:while(表達(dá)式){循環(huán)體}執(zhí)行while語(yǔ)句的環(huán)節(jié)為:(1)執(zhí)行while后面()中的表達(dá)式;(2)當(dāng)表達(dá)式的運(yùn)算結(jié)果為true,則執(zhí)行循環(huán)體,否則跳過環(huán)節(jié)(3),直接執(zhí)行環(huán)節(jié)(4);(3)反復(fù)執(zhí)行(1)、(2)環(huán)節(jié),直到表達(dá)式的運(yùn)算結(jié)果為false時(shí)止;(4)執(zhí)行while語(yǔ)句塊后面的代碼。說明:(1)
while語(yǔ)句中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,只要表達(dá)式的值為true即可繼續(xù)循環(huán);
(2)應(yīng)注意循環(huán)條件的選擇以避免死循環(huán);
(3)若循環(huán)體中又具有“循環(huán)語(yǔ)句”,則稱為嵌套的循環(huán)語(yǔ)句,也稱多重循環(huán)。2.do-while語(yǔ)句do-while語(yǔ)句先執(zhí)行循環(huán)體語(yǔ)句一次,再判別表達(dá)式的值,若為true則繼續(xù)循環(huán),否則終止循環(huán)。語(yǔ)法如下:do{循環(huán)體}while(表達(dá)式);說明:(1)
do-while語(yǔ)句和while語(yǔ)句的區(qū)別在于do-while是先執(zhí)行后判斷,因此do-while至少要執(zhí)行一次循環(huán)體,而while是先判斷后執(zhí)行,假如條件不滿足,則一次循環(huán)體語(yǔ)句也不執(zhí)行;(2)在if語(yǔ)句、while語(yǔ)句中,表達(dá)式后面都不能加分號(hào),而在do-while語(yǔ)句的表達(dá)式后面則必須加分號(hào);(3)
do-while語(yǔ)句也可以組成多重循環(huán),并且也可以和while語(yǔ)句互相嵌套。for語(yǔ)句和while語(yǔ)句同樣,也是一種循環(huán)語(yǔ)句,用來反復(fù)執(zhí)行一段代碼。兩個(gè)循環(huán)語(yǔ)句的區(qū)別就是使用方法不同。for語(yǔ)句的使用語(yǔ)法如下:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體}執(zhí)行for語(yǔ)句的環(huán)節(jié)為:(1)計(jì)算表達(dá)式1的值;(2)計(jì)算表達(dá)式2的值,若值為true,則執(zhí)行循環(huán)體一次,否則跳出循環(huán);(3)計(jì)算表達(dá)式3的值,轉(zhuǎn)回第(2)步反復(fù)執(zhí)行。說明:表達(dá)式1通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式。也允許在for語(yǔ)句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)式。(2)表達(dá)式2通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。(3)表達(dá)式3通??捎脕硇薷难h(huán)變量的值,一般是賦值語(yǔ)句。(4)這3個(gè)表達(dá)式都可以是逗號(hào)表達(dá)式,即每個(gè)表達(dá)式都可由多個(gè)表達(dá)式組成。3個(gè)表達(dá)式都是任選項(xiàng),都可以省略但分號(hào)間隔符不能少。如for(;表達(dá)式;表達(dá)式)省去了表達(dá)式1,for(表達(dá)式;;表達(dá)式)省去了表達(dá)式2,for(表達(dá)式;表達(dá)式;)省去了表達(dá)式3,for(;;)省去了所有表達(dá)式。(5)在整個(gè)for循環(huán)過程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則也許計(jì)算多次。循環(huán)體也許執(zhí)行多次,也也許一次都不執(zhí)行。2.使用break/continue控制循環(huán)在while和for循環(huán)語(yǔ)句中,假如滿足條件,則循環(huán)會(huì)一直繼續(xù)下去,那么該如何自動(dòng)控制循環(huán)的中斷和繼續(xù)呢?C#提供了break/continue語(yǔ)句,用來控制循環(huán)的執(zhí)行。break可以中斷當(dāng)前正在執(zhí)行的循環(huán),并跳出整個(gè)循環(huán)。continue表達(dá)中斷當(dāng)前本次的循環(huán),而后面的代碼無(wú)需執(zhí)行,并進(jìn)行下一次表達(dá)式的計(jì)算與判斷,以決定是否重新開始下一次循環(huán)。break語(yǔ)句還可以和switch語(yǔ)句配合使用,以在達(dá)成某種條件時(shí)從switch語(yǔ)句跳出。break語(yǔ)句語(yǔ)法如下:break;continue語(yǔ)句語(yǔ)法如下:continue;例:intn=0,m=0;for(i=1;i<=10;i++){if(i%2==0)continue;n++;}for(i=1;i<=10;i++){if(i%2==0)continue;n++;}第4章:方法采用兩種方法解決本案例提出的問題。(1)從現(xiàn)有知識(shí)出發(fā)解決輸出圣誕樹問題,不使用方法,把所有的代碼都編寫在Main中。(2)使用方法來解決輸出圣誕樹問題。將使得“打印等腰三角形”這個(gè)基本操作一次編寫,多次使用,提高了代碼復(fù)用率也提高了程序的可讀性。1.使用方法的意義將一個(gè)復(fù)雜的程序分解成若干個(gè)相對(duì)獨(dú)立的方法,使得程序變得簡(jiǎn)練并且結(jié)構(gòu)清楚。方法可以被多次調(diào)用,反復(fù)執(zhí)行,這樣大大地提高了代碼的復(fù)用率。此外,程序的分塊設(shè)計(jì)也便于開發(fā)人員的分工合作、便于調(diào)試和維護(hù),從而大大提高了編程效率。2.方法的定義方法也稱為函數(shù),是一組程序代碼的有機(jī)集合,可以實(shí)現(xiàn)一個(gè)獨(dú)立的功能。可以把程序中多次用到的某個(gè)任務(wù)定義為方法。1)方法的定義方法的定義格式為:[修飾符]返回值類型方法名([參數(shù)列表]){方法體;[return(z)];//返回結(jié)果z}2)方法名方法名是用戶給方法取的名字,可以是任何一個(gè)有效的C#標(biāo)記符。作為編程的良好習(xí)慣,方法的命名應(yīng)盡量符合以下規(guī)則。[修飾符]返回值類型方法名([參數(shù)列表]){方法體;[return(z)];//返回結(jié)果z}3)方法的參數(shù)列表方法可以接受參數(shù),這事實(shí)上是方法與外界“通信”的方式。方法定義時(shí)參數(shù)列表由0個(gè)、1個(gè)或多個(gè)參數(shù)組成。4)方法的返回值類型方法的返回值就是方法的輸出,是一個(gè)方法執(zhí)行完畢后返回給調(diào)用者的數(shù)據(jù),它可以是各種數(shù)據(jù)類型。假如方法沒有返回值,應(yīng)定義為void類型。[修飾符]返回值類型方法名([參數(shù)列表]){方法體;[return(z)];//返回結(jié)果z}5)
return語(yǔ)句方法的返回值由return語(yǔ)句帶回,return語(yǔ)句在賦予方法的調(diào)用者返回值的同時(shí)退出方法。6)方法的修飾符修飾符用于指定方法的訪問權(quán)限,有public、private、static等,默認(rèn)為private。用static修飾的方法是靜態(tài)方法。7)方法體用“{”和“}”括起來的若干語(yǔ)句組成方法體。方法體中可以沒有任何語(yǔ)句,但大括號(hào)不可以省略。[修飾符]返回值類型方法名([參數(shù)列表]){方法體;[return(z)];//返回結(jié)果z}例:staticintMax(inta,intb){intc;c=a+b;returnc;}3.方法的調(diào)用1)方法調(diào)用時(shí)參數(shù)的傳遞A主調(diào)方法的參數(shù)稱為實(shí)際參數(shù)(簡(jiǎn)稱實(shí)參)。B被調(diào)方法的參數(shù)稱為形式參數(shù)(簡(jiǎn)稱形參)。C方法調(diào)用時(shí)實(shí)參被傳遞給相應(yīng)位置的形參,完畢方法的輸入。相應(yīng)地,方法執(zhí)行結(jié)束時(shí),通過return語(yǔ)句把“產(chǎn)品”返回給主調(diào)方法,完畢方法的產(chǎn)出。注意:(1)參數(shù)傳遞時(shí)實(shí)參與形參必須個(gè)數(shù)相等,類型一致,按順序一一相應(yīng)。(2)實(shí)參可以是常量、變量或表達(dá)式子,形參必須是變量。2)方法的調(diào)用方式方法有以下3種調(diào)用方式。(1)方法語(yǔ)句。如:printMax(x,y);(2)方法表達(dá)式。如:z=max(x,y);(3)方法參數(shù)。如:Max(9,Max(5,11));3)方法的調(diào)用過程例:staticvoidmain(){intx,y,z;x=int.parse(Console.ReadLine());y=int.parse(Console.ReadLine());z=Max(x,y);Console.Writeline(“max={0}”,z);}4.IDE使用進(jìn)階1.方法的嵌套調(diào)用嵌套調(diào)用,就是指在調(diào)用一個(gè)方法的過程中又調(diào)用另一個(gè)方法2.求最大公約數(shù)的數(shù)學(xué)方法3.求最小公倍數(shù)的數(shù)學(xué)方法例:求5!usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceExample4_3{classProgram{staticintFact(intn)//求階乘的方法{intf;if(n==1||n==0)return(1);elsef=Fact(n-1)*n;returnf;}staticvoidMain()//主方法{Console.Write("請(qǐng)輸入n:");intn=Convert.ToInt32(Console.ReadLine());Console.WriteLine("{0}!={1}",n,Fact(n));Console.ReadLine();}1.方法的遞歸調(diào)用一個(gè)方法直接或者間接調(diào)用自己稱為遞歸,同時(shí)將該方法稱為遞歸方法。2.使用遞歸的條件一個(gè)問題要用遞歸的方法來解決,需滿足以下條件。(1)原問題可轉(zhuǎn)化為一個(gè)新問題,而這個(gè)新問題與原問題有相同的解決方法。(2)新問題可繼續(xù)這種轉(zhuǎn)化,在轉(zhuǎn)化過程中問題有規(guī)律地遞增或遞減。(3)在有限次轉(zhuǎn)化后,問題得到解決,即具有遞歸結(jié)束的條件。3.遞歸調(diào)用的過程遞歸調(diào)用的過程可分為如下兩個(gè)階段。第一個(gè)階段稱為“回推”。(2)第二個(gè)階段稱為“遞推”。比較前后兩段代碼可以看出,區(qū)別重要有如下兩點(diǎn)。(1)定義Swap()方法時(shí),方法頭的設(shè)計(jì)有區(qū)別,修改后的代碼使用了ref關(guān)鍵字,而修改前的代碼沒有使用。修改前的代碼:staticvoidSwap(inta,intb)修改后的代碼:staticvoidSwap(refinta,refintb)(2)調(diào)用Swap()方法時(shí),調(diào)用語(yǔ)句有區(qū)別,修改后的代碼使用了ref關(guān)鍵字,而修改前的代碼沒有使用。修改前的代碼:Swap(x,y);修改后的代碼:Swap(refx,refy);1.參數(shù)的傳值方式參數(shù)以傳值方式傳遞,被調(diào)用的方法將接受實(shí)參的一個(gè)副本,參數(shù)傳遞后,形參和實(shí)參各占不同的內(nèi)存單元。假如對(duì)被調(diào)用方法中的實(shí)參副本進(jìn)行修改,不會(huì)影響原始實(shí)參的值。2.參數(shù)的傳引用方式1)
ref引用參數(shù)參數(shù)以傳引用方式傳遞時(shí),形參將不創(chuàng)建新的存儲(chǔ)位置,形參和實(shí)參共用存儲(chǔ)單元,這時(shí)形參相稱于它所相應(yīng)的實(shí)參的一個(gè)別名,假如在被調(diào)用的方法中對(duì)形參進(jìn)行修改,事實(shí)上就是對(duì)實(shí)參進(jìn)行了修改,因此當(dāng)方法調(diào)用完畢時(shí),方法中對(duì)形參的修改直接影響了實(shí)參。2)out輸出參數(shù)除了ref關(guān)鍵字外,C#還提供了out關(guān)鍵字用于參數(shù)的引用傳遞。ref參數(shù)必須在方法被調(diào)用前進(jìn)行賦值,但在實(shí)際的應(yīng)用中,有時(shí)僅僅需要調(diào)用方法計(jì)算出某個(gè)結(jié)果返回給調(diào)用者,而不需要調(diào)用者對(duì)這個(gè)參數(shù)進(jìn)行初始化。在這種情況下可以使用out參數(shù),out參數(shù)僅用于輸出方法的某個(gè)結(jié)果。ref參數(shù)和out參數(shù)比較:ref參數(shù)和out參數(shù)都可以將參數(shù)的更改保存,但ref側(cè)重于修改,out側(cè)重于輸出。1.為什么需要重載C#提供了重載機(jī)制,允許給多個(gè)功能相似的方法取相同的名字,在調(diào)用時(shí)由系統(tǒng)決定應(yīng)當(dāng)調(diào)用哪個(gè)方法。2.什么是方法重載兩個(gè)或兩個(gè)以上的一組方法,假如方法名相同,使用不同的參數(shù)列表(參數(shù)的個(gè)數(shù)或類型或順序不同)來定義,稱為方法重載。3.系統(tǒng)如何擬定該調(diào)用哪個(gè)方法調(diào)用品有重載的方法時(shí),系統(tǒng)會(huì)根據(jù)參數(shù)個(gè)數(shù)或者參數(shù)類型的不同來區(qū)分。具體調(diào)用時(shí),由編譯器根據(jù)實(shí)參和形參的類型及個(gè)數(shù)的最佳匹配,自動(dòng)擬定調(diào)用哪個(gè)方法。第5章:類與對(duì)象對(duì)象涉及:對(duì)象名一組屬性一組操作(行為)屬性描述對(duì)象的靜態(tài)特性,表達(dá)對(duì)象的狀態(tài),是類的數(shù)據(jù)成員;操作(或稱方法)描述對(duì)象的行為,是對(duì)象的動(dòng)態(tài)特性,通常是對(duì)數(shù)據(jù)成員進(jìn)行操作的方法,稱為成員函數(shù)。現(xiàn)實(shí)生活中的對(duì)象往往可以根據(jù)共性進(jìn)行歸類,一組具有共同特性和行為的相似對(duì)象歸為一類。程序設(shè)計(jì)中,把一組相似對(duì)象的共同特性抽象出來并存儲(chǔ)在一起,就形成了類。從具體對(duì)象到類事實(shí)上是一個(gè)概括的過程,把對(duì)象的共同特性抽取出來,形成了類,假如再對(duì)這個(gè)類用計(jì)算機(jī)語(yǔ)言加以描述,就形成了程序中的類,這個(gè)過程稱為抽象。1.封裝封裝事實(shí)上是在類的設(shè)計(jì)過程中完畢的,類對(duì)外部提供統(tǒng)一的接口方法,類的內(nèi)部相稱于一個(gè)黑盒,類的使用者并不知道類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),只要知道怎么調(diào)用這些接口方法就夠了。2.繼承一個(gè)類從另一個(gè)類獲得了已有的基本特性,并在此基礎(chǔ)上增長(zhǎng)了自身的一些特殊特性。3.多態(tài)概念:在面向?qū)ο蟪绦蛟O(shè)計(jì)中,多態(tài)是指用戶對(duì)一個(gè)對(duì)象進(jìn)行一個(gè)操作,但具體的動(dòng)作卻取決于這個(gè)對(duì)象的類型,即對(duì)不同的對(duì)象執(zhí)行相同的操作會(huì)產(chǎn)生不同的結(jié)果。分類:分為編譯時(shí)多態(tài)和運(yùn)營(yíng)時(shí)多態(tài)兩種。4.消息通信對(duì)象具有一定的獨(dú)立性和自治性,但對(duì)象和對(duì)象之間不是彼此獨(dú)立的,它們通過消息進(jìn)行通信,一個(gè)程序可以被看作是對(duì)象之間互相作用的結(jié)果。1.類的定義類定義的一般格式如下:class<類名>{private<私有的字段、方法、屬性>protected<保護(hù)的字段、方法、屬性>public<公有的字段、方法、屬性>}類體中包含字段、方法、屬性等成員。其中字段是“存儲(chǔ)信息”的成員;方法是用于描述某類對(duì)象共同行為的成員,是“做事情”的成員例:定義一個(gè)車輛類(有三個(gè)變量)classVehicle{publicintpassengers;//乘客數(shù)publicintfuelcap;//所耗燃料publicintmpg;//每公里耗油量}2.對(duì)象的定義與使用1)對(duì)象的聲明與實(shí)例化類名對(duì)象名; //聲明對(duì)象對(duì)象名=new類名(); //實(shí)例化對(duì)象例如,創(chuàng)建一個(gè)名為catBobi的貓類對(duì)象:(1)CatcatBobi;catBobi=newCat();(2)CatcatBobi=newCat();2.對(duì)象的定義與使用2)對(duì)象的使用一個(gè)對(duì)象被創(chuàng)建后,就可以通過對(duì)象自身來獲取對(duì)象狀態(tài)或調(diào)用對(duì)象行為。調(diào)用對(duì)象成員的格式為:對(duì)象名.對(duì)象成員3.類成員的訪問修飾符表5-1類的成員的訪問修飾符及其含義4.類的屬性為什么使用屬性C#提供了一種更有效的訪問形式,既能讀寫字段,同時(shí)又保證數(shù)據(jù)成員能被更好地隱藏和保護(hù)起來呢?那就是使用屬性。屬性是類的一種特殊成員,它具有字段的形式,又具有方法的本質(zhì)。2)如何定義屬性屬性的定義格式為:修飾符類型屬性名{set{…//寫入數(shù)據(jù)}get{…//讀取數(shù)據(jù)}}get與set是C#特有的訪問器。get: 讀取訪問器,用于從對(duì)象讀取數(shù)據(jù)(只讀)。set:寫入訪問器,用于向?qū)ο髮懭霐?shù)據(jù)(只寫)。3)屬性的讀寫控制屬性的get和set訪問器并非都是必須的.假如只有g(shù)et訪問器,該屬性只可以讀取,不可以寫入;假如只有set訪問器,該屬性只能寫入,不能讀??;假如對(duì)只讀屬性進(jìn)行賦值,或者讀取只寫屬性的值,都會(huì)產(chǎn)生編譯錯(cuò)誤。4)在屬性中完畢更多的功能5.VS.NETIDE使用進(jìn)階:假如已經(jīng)定義好了字段,想要為字段寫一個(gè)屬性,可以運(yùn)用VS.NET的重構(gòu)功能很方便地實(shí)現(xiàn)。具體做法:選中要封裝的字段定義代碼,例如選中“stringvariety;”,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【重構(gòu)】|【封裝字段】命令,在彈出的“封裝字段”對(duì)話框的“屬性名”文本中已存在一個(gè)屬性名“Variety”,讀者可以默認(rèn)也可以修改它,單擊“擬定”按鈕,可以在彈出的“預(yù)覽引用更改一封裝字段”對(duì)話框內(nèi)瀏覽代碼更改,單擊“應(yīng)用”按鈕,一個(gè)完整的“Variety”屬性定義便出現(xiàn)在相應(yīng)字段的下一行。類的成員有實(shí)例成員和靜態(tài)成員之分。類的實(shí)例成員和靜態(tài)成員最簡(jiǎn)樸的區(qū)分方法就是看定義這些成員時(shí)是否使用了static修飾符。1.靜態(tài)字段假如在聲明字段時(shí)添加了static修飾符,該字段就成為靜態(tài)字段。靜態(tài)字段用于存儲(chǔ)一些屬于某個(gè)類的所有對(duì)象的信息,它是被類的全體對(duì)象共享的數(shù)據(jù)。例如:為Cat類添加一個(gè)靜態(tài)字段count,用于表達(dá)當(dāng)前存在的貓對(duì)象總數(shù)。2.靜態(tài)屬性為了對(duì)外界隱藏?cái)?shù)據(jù)的同時(shí)方便對(duì)靜態(tài)字段的訪問,往往需要使用靜態(tài)屬性。靜態(tài)屬性與靜態(tài)字段同樣不屬于任何對(duì)象,因此它們不能被對(duì)象所調(diào)用,而是由類名直接調(diào)用:類名.靜態(tài)字段名;類名.靜態(tài)屬性名;classCat{…privatestaticintcount;publicstaticintCount{set{count=value;}get{returncount;}}…}3.靜態(tài)方法假如在聲明方法時(shí)添加了static修飾符,該方法就成為靜態(tài)方法。靜態(tài)方法屬于類,只能通過類名調(diào)用,不能由對(duì)象調(diào)用。注意:靜態(tài)方法只能訪問靜態(tài)字段或?qū)傩?,不能訪問實(shí)例字段或?qū)傩?。而?shí)例方法既可以訪問實(shí)例字段也可以訪問靜態(tài)字段。靜態(tài)方法由類名直接調(diào)用:publicstaticintGetCount()//靜態(tài)方法{returncount;}Console.WriteLine("目前有{0}只貓",Cat.GetCount());1.構(gòu)造函數(shù)
什么是構(gòu)造函數(shù)
對(duì)象在實(shí)例化的時(shí)候,可以進(jìn)行數(shù)據(jù)成員的設(shè)立,稱為對(duì)象的初始化;此外,類有時(shí)也需要做一些初始化工作,這些工作都由構(gòu)造函數(shù)完畢。構(gòu)造函數(shù)也稱構(gòu)造方法。格式:public構(gòu)造函數(shù)名(參數(shù)列表){構(gòu)造函數(shù)體
}如:基本特點(diǎn)是:(1)構(gòu)造函數(shù)名與類名相同;(2)構(gòu)造函數(shù)沒有返回值,且函數(shù)頭部不用寫“void”;(3)除了在實(shí)例化對(duì)象時(shí)由系統(tǒng)調(diào)用以及派生類構(gòu)造函數(shù)調(diào)用基類構(gòu)造函數(shù)之外,其他任何函數(shù)都不能調(diào)用它。2)構(gòu)造函數(shù)的聲明與調(diào)用publicCat(stringmyVariety,stringmyColor,floatmyWeight){variety=myVariety;hairColor=myColor;weight=myWeight;birthday=DateTime.Today;}用new運(yùn)算符創(chuàng)建一個(gè)對(duì)象時(shí),構(gòu)造函數(shù)名后所跟的參數(shù)列表就是對(duì)象的初始化列表。CatcatBobi=newCat("波斯貓","白色",2.3F);3)構(gòu)造函數(shù)的重載構(gòu)造函數(shù)可以重載,以方便程序員初始化對(duì)象。publicCat(stringmyVariety,stringmyColor,floatmyWeight){…}publicCat(floatmyWeight,stringmyVariety,stringmyColor){…}添加了這些構(gòu)造函數(shù)后,可以在Main()方法中按照如下所示的多種方式創(chuàng)建并初始化對(duì)象:CatcatBobi=newCat("波斯貓","白色",2.3F);CatcatBobi=newCat("波斯貓",2.3F,"白色");CatcatBobi=newCat(2.3F,"波斯貓","白色");4)靜態(tài)構(gòu)造函數(shù)靜態(tài)構(gòu)造函數(shù)通常用于對(duì)類的靜態(tài)字段進(jìn)行初始化。為Cat類添加靜態(tài)構(gòu)造函數(shù)對(duì)count字段進(jìn)行初始化。staticCat()//靜態(tài)構(gòu)造函數(shù){count=0;}靜態(tài)構(gòu)造函數(shù)有如下特點(diǎn):(1)僅有一個(gè)static修飾符。(2)只對(duì)靜態(tài)字段賦初值。(3)由系統(tǒng)自動(dòng)調(diào)用,一個(gè)類僅調(diào)用一次,與創(chuàng)建對(duì)象操作無(wú)關(guān)。5.析構(gòu)函數(shù)1)什么是析構(gòu)函數(shù)在對(duì)象使用結(jié)束時(shí),可以進(jìn)行一些相關(guān)的清理工作并釋放所占用的內(nèi)存空間,這個(gè)工作由析構(gòu)函數(shù)完畢。析構(gòu)函數(shù)的特點(diǎn)如下:(1)析構(gòu)函數(shù)的名稱與類名相同,在類名前加“~”;(2)析構(gòu)函數(shù)沒有返回值,也不能聲明為void;(3)析構(gòu)函數(shù)只有一個(gè),不能重載;(4)析構(gòu)函數(shù)也是類的成員函數(shù)。~Cat(){Console.WriteLine("執(zhí)行了析構(gòu)函數(shù)!");}1.方法的返回值為對(duì)象方法的返回值可以是int、double等系統(tǒng)標(biāo)準(zhǔn)類型,也可以是用戶自定義的類型,兩者的用法沒什么兩樣。2.值類型變量與引用類型變量C#的數(shù)據(jù)類型分為兩大類:值類型和引用類型。1)值類型簡(jiǎn)樸地說,值類型變量就是一個(gè)包含實(shí)際數(shù)據(jù)的量。當(dāng)定義一個(gè)值類型變量時(shí),C#會(huì)根據(jù)變量所聲明的類型分派一塊堆棧存儲(chǔ)區(qū)域給這個(gè)變量,然后對(duì)這個(gè)變量的讀寫就直接在這塊內(nèi)存區(qū)域進(jìn)行。2)引用類型引用類型變量存儲(chǔ)的不是它所代表的實(shí)際數(shù)據(jù),而是該實(shí)際數(shù)據(jù)的引用(地址)。引用類型變量的賦值只賦值對(duì)象的引用,而不復(fù)制對(duì)象自身。變量num1和num2共同引用一個(gè)對(duì)象,對(duì)其中任何一個(gè)做修改,另一個(gè)都會(huì)隨之改變3)對(duì)象做方法參數(shù)由于C#的數(shù)據(jù)類型分為值類型和引用類型,傳遞參數(shù)的方式有傳值方式和傳引用方式,組合一下,C#傳遞參數(shù)有4種情況:值類型按傳值方式傳遞,值類型按傳引用方式傳遞,引用類型按傳值方式傳遞,引用類型按傳引用方式傳遞。課后習(xí)題答案:1.填空題(1)類(2)讀取,寫入,寫入,讀取(3)static,一個(gè),類名,對(duì)象名(4)構(gòu)造函數(shù),析構(gòu)函數(shù)2.選擇題(1)D(2)A(3)B(4)D3.簡(jiǎn)答題(1)簡(jiǎn)述類與對(duì)象的關(guān)系。答:類是對(duì)事物的概括性定義,而對(duì)象是事物自身,是類的一個(gè)實(shí)例(instance),對(duì)象具有類所規(guī)定的特性,只能執(zhí)行類所規(guī)定的操作。打個(gè)比方,類就相稱于一個(gè)模板,而對(duì)象則是由這個(gè)模板產(chǎn)生出來的具體產(chǎn)品,一個(gè)模板可以生產(chǎn)很多產(chǎn)品,一個(gè)類可以產(chǎn)生很多對(duì)象。(2)簡(jiǎn)述屬性與字段的區(qū)別,屬性與方法的區(qū)別。答:屬性與字段的區(qū)別:屬性可用于完畢一些控制和計(jì)算,程序員可以通過在get和set訪問器中編寫適當(dāng)?shù)拇a,實(shí)現(xiàn)所需的功能,而字段不能完畢計(jì)算,只能用于存放數(shù)據(jù),屬性不一定和字段一一相應(yīng)。屬性與方法的區(qū)別:方法和屬性都能完畢計(jì)算,屬性可以作為一個(gè)特殊的方法使用,但是兩者調(diào)用方式不同,屬性像字段同樣被調(diào)用,屬性名后面沒有參數(shù)和括號(hào)(例如catBobi.HairColor),而方法被調(diào)用時(shí)方法名后面必須有括號(hào),根據(jù)需要還可以有參數(shù)列表。(例如:catBobi.SetInfo("波斯貓","白色",2.3F);)(3)值類型與引用類型在一般賦值時(shí)有什么不同?值類型與引用類型在做函數(shù)參數(shù)時(shí)有什么不同?在傳值方式下(即沒有使用ref或out時(shí)),它們默認(rèn)傳遞的分別是什么,變量值還是引用(地址)?答:值類型與引用類型在一般賦值時(shí)的不同:值類型變量間的賦值,賦的是變量值,當(dāng)num1和num2是值類型變量時(shí),執(zhí)行語(yǔ)句“num1=num2;”時(shí),賦值運(yùn)算符兩邊的num1和num2是兩個(gè)不同的存儲(chǔ)區(qū)域,改變num2的值不會(huì)影響num1;引用類型變量的賦值只賦值對(duì)象的引用,而不復(fù)制對(duì)象自身。當(dāng)num1和num2是引用類型變量時(shí),語(yǔ)句“num1=num2;”使變量num1和num2共同引用一個(gè)對(duì)象,對(duì)其中任何一個(gè)做修改,另一個(gè)都會(huì)隨之改變。值類型與引用類型在做函數(shù)參數(shù)時(shí)的不同:值類型變量以傳值方式傳遞時(shí),傳遞的是變量的值,形參和實(shí)參是不同的內(nèi)存單元,形參的改變不會(huì)影響實(shí)參;對(duì)象以傳值方式傳遞,相稱于兩個(gè)引用類型變量進(jìn)行賦值,傳遞的是對(duì)象的引用(地址),形參和實(shí)參共同引用一個(gè)對(duì)象,對(duì)形參做修改,實(shí)參會(huì)隨之改變。在傳值方式下(即沒有使用ref或out時(shí)),值類型默認(rèn)傳遞的是變量值,引用類型默認(rèn)傳遞的是引用(地址)。第6章:數(shù)組數(shù)組是值的列表,每個(gè)值存儲(chǔ)在數(shù)組中特定編號(hào)的位置。每個(gè)位置相應(yīng)的編號(hào)稱為索引(index)或者下標(biāo)(subscript)。在C#中數(shù)組的索引通常從0開始,所以存儲(chǔ)在索引5的值事實(shí)上是數(shù)組中第6個(gè)值。1.?dāng)?shù)組的聲明在C#中,聲明數(shù)組的形式為:類型[]數(shù)組名;例如:double[]Score;//聲明double型數(shù)組引用int[]arr1,arr2;//聲明int型數(shù)組arr1,arr2注意:(1)
int[]是類型,變量名放在方括號(hào)后面,不可放在方括號(hào)前面;例:doubleScore[];Ⅹ(2)聲明一個(gè)數(shù)組變量不可指定數(shù)組長(zhǎng)度。例:double[6]Score;Ⅹ2.創(chuàng)建數(shù)組對(duì)象創(chuàng)建數(shù)組就是給數(shù)組對(duì)象分派內(nèi)存。當(dāng)聲明一個(gè)數(shù)組時(shí),事實(shí)上沒有創(chuàng)建該數(shù)組,與一個(gè)類相同,必須在使用它之前創(chuàng)建數(shù)組對(duì)象,使用new運(yùn)算符來創(chuàng)建數(shù)組實(shí)例,有以下3種方式。(1)聲明數(shù)組,然后創(chuàng)建數(shù)組對(duì)象。類型[]數(shù)組名;數(shù)組名=new類型[元素個(gè)數(shù)];例如:double[]Score;//聲明數(shù)組引用Score=newdouble[10];//創(chuàng)建具有10個(gè)元素的數(shù)組(2)聲明數(shù)組的同時(shí)創(chuàng)建數(shù)組對(duì)象。類型[]數(shù)組名=new類型[元素個(gè)數(shù)];類型可以是C#中的各種數(shù)據(jù)類型。注意:若創(chuàng)建數(shù)組對(duì)象時(shí)沒有對(duì)數(shù)組進(jìn)行初始化,C#自動(dòng)為數(shù)組元素進(jìn)行初始化賦值。例如:int[]arr=newint[8];所有元素被初始化為0。(3)使用new創(chuàng)建數(shù)組對(duì)象的同時(shí),初始化數(shù)組所有元素。類型[]數(shù)組名=new類型[]{初值表};或類型[]數(shù)組名={初值表};例如:int[]arr=newint[]{1,2,3,4};或int[]arr={1,2,3,4};3.訪問數(shù)組元素(1)訪問方式。為獲取在一個(gè)數(shù)組中保存的一個(gè)值,必須提供數(shù)組名和元素的序號(hào)(序號(hào)稱為索引或是下標(biāo)),形式為:數(shù)組名[下標(biāo)];如上面arr中的元素分別為:arr[0],arr[1],arr[2],arr[3]。(2)注意:①數(shù)組下標(biāo)從零開始,最大下標(biāo)為數(shù)組長(zhǎng)度減1;②所有數(shù)組需在編譯時(shí)檢查是否在邊界之內(nèi),在上例中,若有arr[5]將不能訪問;③可在用戶程序中使用Length數(shù)據(jù)成員來測(cè)試數(shù)組長(zhǎng)度,即數(shù)組名.Length。4.改變數(shù)組元素為把一個(gè)值賦給一個(gè)特定的數(shù)組元素,形式為:數(shù)組名[下標(biāo)]=值;例如:arr[1]=8;//此時(shí)數(shù)組中的值為1,8,3,45.?dāng)?shù)組常用的方法System.Array類提供了許多方法,常用的方法有:(1)
Sort():用于數(shù)組元素的排序方法;(2)
Clear():將數(shù)組中某一范圍的元素設(shè)立為0或null;(3)
Clone():將數(shù)組的內(nèi)容復(fù)制到一個(gè)新數(shù)組的實(shí)體;(4)
GetLength():返回某一維數(shù)組的長(zhǎng)度;(5)
IndexOf():返回?cái)?shù)組值中符合指定的參數(shù)值,且是第一次出現(xiàn)。兩層循環(huán)結(jié)構(gòu)外層循環(huán)每次把操作范圍內(nèi)最大的數(shù)放到最后位置內(nèi)層循環(huán)每次把較大的數(shù)放到靠后的位置擬定每層循環(huán)的邊界外層循環(huán)n-1次 內(nèi)層循環(huán)n-1-i次C#專門提供了一種用于遍歷數(shù)組的foreach循環(huán)語(yǔ)句。foreach循環(huán)語(yǔ)句的格式為:foreach(類型變量名in表達(dá)式)嵌入語(yǔ)句其中,in為關(guān)鍵字,類型和變量名用于說明循環(huán)變量,表達(dá)式相應(yīng)集合,每執(zhí)行一次嵌入語(yǔ)句,循環(huán)變量就依次取出集合中的一個(gè)元素代入其中。如:int[]arr1=newint[]{1,2,3,4,5,6};foreach(intiinarr1){Console.WriteLine(“Valueis{0}”,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025伸縮縫安裝工程勞務(wù)分包合同修改
- 9 知法守法依法維權(quán) 第二課時(shí)(說課稿)-2023-2024學(xué)年道德與法治六年級(jí)上冊(cè)統(tǒng)編版001
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 六 表內(nèi)乘法和表內(nèi)除法(二)練習(xí)十四說課稿 蘇教版001
- 10《爬山虎的腳》第二課時(shí) 說課稿-2024-2025學(xué)年語(yǔ)文四年級(jí)上冊(cè)統(tǒng)編版
- Unit 3 My weekend plan Part 6(說課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
- 生了病怎么辦 (課件)-2024-2025學(xué)年人教版(2024)體育一年級(jí)全一冊(cè)
- Review Module Unit 1(說課稿)-2023-2024學(xué)年外研版(三起)英語(yǔ)四年級(jí)下冊(cè)
- 17《松鼠》說課稿-2024-2025學(xué)年五年級(jí)語(yǔ)文上冊(cè)統(tǒng)編版001
- 2025農(nóng)村宅基地轉(zhuǎn)讓合同模板
- 8網(wǎng)絡(luò)新世界 第一課時(shí) 說課稿-2023-2024學(xué)年道德與法治四年級(jí)上冊(cè)統(tǒng)編版
- 設(shè)立項(xiàng)目管理公司組建方案
- 薪酬戰(zhàn)略與實(shí)踐
- 答案之書(解答之書)-電子版精選答案
- 中國(guó)古代文學(xué)史 馬工程課件(上)01總緒論
- GB/T 22085.1-2008電子束及激光焊接接頭缺欠質(zhì)量分級(jí)指南第1部分:鋼
- 上海中心大廈-介紹 課件
- 《口腔修復(fù)學(xué)》種植義齒-課件
- 非酒精性脂肪性肝病防治指南解讀課件
- 地理微格教學(xué)課件
- 合成氨操作規(guī)程
- 清華大學(xué)抬頭信紙
評(píng)論
0/150
提交評(píng)論