C學習筆記c重點整理_第1頁
C學習筆記c重點整理_第2頁
C學習筆記c重點整理_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、CTGS-資料文件C#學習筆記1. C#具有所有面向對象的語言的所有特性:封裝,繼承,多態(tài)。在C#系統(tǒng)中,所有的類型都可以看作一個對象。C#只允許單繼承,即一個類不會有多個基類,C#不會有全局函數(shù),不會有全局變量,不會有全局常數(shù),所有的一切只能封裝在一個類中。2. .net包括四個部分:vos類型系統(tǒng)。元數(shù)據(jù);公用語言規(guī)范;虛擬執(zhí)行系統(tǒng)。3. usingsystem表示導入名稱空間。4. 讓我們從第一個程序開始就記得:每個東西都必須屬于一個類,類里面的方法總是為我們完成某件工作的。在C#中,程序的執(zhí)行總是從main()方法開始的,一個程序中不允許出現(xiàn)兩個或兩個以上的main()方法。對于習慣學

2、C控制臺程序的讀者,必須要牢記:main()方法必須包含在一個類中。5. 利用string可以方便地對字符串進行連接或剪切。例:strings=”good”+”morning”;charx=s3字符串可以通過下標進行索引,得到一個字符。.6. 我們可以用/進行單行標注,/*/進行多行標注。7. 在C和C+中,任何非0值都表示真,在C#中,任何非0值都不能代替true.在其它類型的整型值和布爾值之間不存在任何的轉換,將整型轉換成布爾型是不合法的。.8. 把一系列相關的變量組織成單一實體的過程稱為生成結構的過程。這個單一實體的類型叫結構類型,每一個變量就是結構的成員。.9. 結構類型包含的成員類型

3、可以相同,也可以不同。我們甚至可以把一個結構類型當作另一個結構成員的類型。10. 枚舉實際上是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號。結構類型變量的值由各個成員的值組合而成。而枚舉則不同,枚舉類型的變量在某一時刻只能取枚舉中某個元素的值。按照系統(tǒng)的設定,每個元素的類型都為整型。且第一個元素的值為0,后面的每個元素梯加1,也可以直接賦值。如把前面第一個元素的值設為1,后面的元素不用設,系統(tǒng)自動將后面元素的值遞加1.11. C#中另一大數(shù)據(jù)類型是引有類型。其含義是該類型的變量不直接存儲所包含的值,而是指向它所要存儲的值。也就是說引用類型存儲實際數(shù)據(jù)引用值的地址。.12. 類是面向對象編程

4、的基本單位,是一種包含數(shù)據(jù)成員,函數(shù)成員和嵌套類型的數(shù)據(jù)結構。類和結構都包含了自己的成員,但它們的區(qū)別是:類是引用類型,而結構是值類型。.13. 如果我們對某個類定義了一個變量,則我們就將它稱為類的一個實例。14. 我們常用到的類:object類。這個類是其它所有類的基類,其它類型可以直接或間接地從object類中繼承。因此,對一個object類的變量可以賦于任何類型的值。.15. 代表?在聲明代表時,只需要指定代表指向的原型的類型,它不能有返回值,也不能帶有輸出類型的參數(shù)。如:delegateintMydelegate().在使用的時候:Mydelegated=newMydelegate(p

5、.instanceMethod).為什么不用delegated=newMydelegate(p.instanceMethod)呢?原因是delegate相當于class需要一個名字,classmyclass這個class的名字是myclass而且它包含有其它元素、常數(shù)或者函數(shù),變量等。跟chara=a不同,它不包含有其它的元素,a就是一個變量。而myclass不是變量,它只一個名字。而myclassa=newmyclass();a才是變量,是類的一個實例。在這里,這個delegate的名字是Mydelegate,也并不是一個變量。16. 變量從用戶角度來說,是存儲信息的基本單元,從系統(tǒng)角度來說

6、,變量就是計算機內存中的一個儲存空間。17. 靜態(tài)方法不能用類的實例來訪問,必須用類名來訪問。18. 數(shù)組的聲明:數(shù)組的類型數(shù)組的元素個數(shù)數(shù)組的名字;數(shù)組個數(shù)可以通過數(shù)組名加圓點加Length獲得。如arr.Length表示arr數(shù)組的個數(shù).19. 在進行批量處理數(shù)據(jù)的時候,我們要用到數(shù)組.數(shù)組是一組類型相同的有序數(shù)據(jù).20. 數(shù)組的初始化:inta1=newint1,2,3;為什么是newint,而不是newa1呢:因為int是類型,a1是int類型的一個實例.而且a1所代表的是1,2,3,并不是函數(shù)與delegateintMyclass();不同,Myclass()雖然是一個名字但它可以代

7、表一個函數(shù),不是常數(shù).原則:類型后面的名字如果可以代表函數(shù),則這個名字就是一種類型.如果類型后面的名字代表常數(shù),則這個名字不是一種類型,只是類型的一個變量.或者可以用另一種說法:如果名字后面含有(),則在賦值或設定實例的時候new后面要用該名字作為類型.21. 變量名不能與C#中的關鍵字名稱相同。變量名不能與C#中庫函數(shù)名稱相同。22. 靜態(tài)變量:staticinta;一旦靜態(tài)變量所屬的類被加載,直到包含該類的程序運行結束前它將一直存在。.CTGS-資料文件23. 穩(wěn)性數(shù)據(jù)轉換實際上就是從低精度的數(shù)據(jù)轉換成高精度的的數(shù)據(jù)類型。如:ushort轉換成int.24. 隱式枚舉轉換允許把十進制數(shù)0轉

8、換成任何枚舉類型,對其它整數(shù)則不存在這種隱式轉換。25. 從元素類型為TS的數(shù)組類型S到元素類型為Tt的數(shù)組類型T轉換,如果元素類型為值類型,則不能進行隱式轉換。.顯式數(shù)值轉換顯武坡值轉換足指當不存在相應的隱式轉換時,從-種數(shù)了類型到另-種數(shù)了婁型的轉換q包括從sbyte到byt巴ushoil.uint.iilong.或cliaio 從bjle到sbyle或clur3從shoit至Usbyte,byte,ushort,unit,ulong.diarg 從uslijoii到sbyte.byt亡.slioit.或cliai: Xintflsbyte.bTe.short,ushort.niiiLnl

9、otig.或char6從niiit至Uchar10?0:1).28. 枚舉類型的加法:Weekdayday1=Weekday.Sunday;Weekdayday2=Weekday.Saturday;Weekdayday3=day1+6;枚舉型加法實際上枚舉基類型元素相加即一般為(int型相加)。.29. 如果兩個整數(shù)類型的變量相除又不能整除,返回結果是不大于相除之值的最大整數(shù)。30. 求余運算:5%3=2。5%1.5=0.5.31. as制作符用于通過引用轉換或裝箱轉換將一個值顯式地轉換成指定的引用類型。32. 位運算符就是對數(shù)按二進制位進行運算的制作符。位運算中的異或運算,當兩個位相同時,異

10、或運算結果為0,不相同時異或運算為1.移位運算,左稱位將制作數(shù)向左位移,高位被拋棄,低位順序補0.右移運算時,如果X為非負數(shù),最高位設為0。如果X為負數(shù),最高位設為1,即最大為1.33. 自增自減制作符:自增自減制作符有前綴和后綴之分。對于前綴制作符,遵行的原則是“先增減,后使用”,后綴則相反,“先使用,后增減”。34. new制作符:new制作符用于創(chuàng)建一個新的類型實例。它有三種形式:1,對象創(chuàng)建表達式。2,數(shù)組創(chuàng)建表達式。3代表創(chuàng)建表達式。35. typeof制作符用于獲得系統(tǒng)原型對象的類型。CTGS-資料文件36. check和uncheck制作符只影響其置于括號中的運算的溢出檢查。二進

11、程安排控制1. C#提供的選擇語句有if和switch語句。2. 如果if或else語句包含的嵌套語句只包含一條執(zhí)行語句,則嵌套部分的大括號可以省略。3. 每一條else與離它最近且沒有其它else與之配對的if相搭配。4.if語句僅允許布爾數(shù)據(jù)類型的結果。例:if(args.length=0)是正確的。而if(args.length)是不正確的。args.length返回一個整形數(shù)(integer)。.5. switch語句是只能有一個default標簽。6. C#中它要求每個case標簽項后使用break語句或中轉語句goto,即不允許從一個case自動遍歷到其它case.如果想遍歷其它語

12、句,則可以加入下面兩條跳轉語句:gotocaselable:跳至標簽語句執(zhí)行。Gotodefault:跳至default標簽執(zhí)行。.7. 數(shù)組的初始化:inta1=newint1,2,3,4,5在事先知道循環(huán)次數(shù)的條件下,用for循環(huán)是比較方便的。8. while語句中允許使用break語句來結束循環(huán)。也可以使用continue語句來停止內嵌語句的執(zhí)行,繼續(xù)進行while循環(huán)。.9. 可以使用break和continue語句來控制循環(huán)的表達。女口:要求打印除7以外的0到9的語句,只需要在到打印7的時候,跳出打印語句就可以了。For(inti=0;i9;i+)ifi=7continue;cons

13、ole.write(i);.10. foreach(MyintxinPrime)預編譯和條件編譯都是以#開頭的。可以幫助我們在程序執(zhí)行過程中發(fā)出編譯的不對或警告。11. 溢出的處理用checked來檢測。12. 預處理指令如果出現(xiàn)在其它輸入輸出元素中間就不會被執(zhí)行。中writeLine或Readline等中間。.三類1. C#中的類只支持單繼承。2. 對類成員的訪問:1.公有成員。Public,允許外部訪問。2.私有成員。Private,只允許類中的成員訪問。派生類都不能訪問。3.保護成員。Protected.方便派生類的直接訪問,同時又希望對外部是隱藏的。4.內部成員。Internal.對于

14、同一包內的程序或庫是透明的。而對于包外是隱藏的。.5. 類中的成員要么是靜態(tài)要么是非靜態(tài)。一般來說,靜態(tài)成員是屬于類所有,非靜態(tài)成員則屬于類的實例對象。訪問的時候:靜態(tài):類名.成員名。非靜態(tài):實例名.成員名(this.成員名)static.6. 關鍵字const用于聲明常量,后跟數(shù)據(jù)類型的聲明。例:publicconstdoublex=1.0;.7. 構造函數(shù)不聲明返回類型,構造函數(shù)用于執(zhí)行類的實例的初始化。8. 折構函數(shù)在類的實例超出實用范圍時,我們希望收回它所占的存儲時使用。析構函數(shù)跟類名相同,只是在前面加上一個符號:.9. 值參數(shù):使用值參數(shù)時,初調用的方法不會修改內存中實參的值。引用型

15、參數(shù):引用型參數(shù)并不開辟新的內存區(qū)域。當利用引用型參數(shù)向方法傳遞形參時,編譯程序將把實際參數(shù)所在內存中的地址傳遞給方法。.10. substring(0,i)從此實例檢索子字符串。子字符串從指定的字符位置開始且具有指定的長度。String.indexof(char)報告指定Unicode字符在此字符串中的第一個匹配項的索引.11. 輸出型參數(shù):輸出型參數(shù)也不開辟新內存,跟引用型參數(shù)一樣,只是引用型參數(shù)在使用的時候不用需要對變量進行初始化,引用型參數(shù)用于傳遞方法的返回數(shù)據(jù)。.12. 如果形參中包含了數(shù)組參數(shù),那么它必須在參數(shù)表中位于最后。另外,參數(shù)只允許一維數(shù)組。13. 靜態(tài)方法可以訪問類中的靜

16、態(tài)成員,但不能訪問非靜態(tài)成員。但可以將類的實例當作參數(shù)傳遞給方法使用,指明具體的調用對象,這時就可以制作實例的靜態(tài)和非靜態(tài)成員了。.14. 類的方法的重載:方法的名字相同,但參數(shù)個數(shù)或類型不同,編譯器就能知道在什么時候調用什么方法。15. C#中,制作符重載總是在類中聲明,并且通過調用類的成員方法來實現(xiàn)。制作符重載可以適用于類的實例的CTGS-資料文件制作。16. 靜態(tài)域的聲明用static修飾符。無論建立多少個該類的實例,內存中只存在一個靜態(tài)數(shù)據(jù)拷貝。域相當于簡單成員變量。在另一個類對靜態(tài)域的訪問可以通過對靜態(tài)域所在類的public方法進行訪問。.17. 簡單地說:const型表達式的值在編

17、譯時形成,而只讀域staticreadonly表達式的值在程序運行時才形成。這種方法有利于版本的控制。.18. 對于靜態(tài)域,類在裝載時對其進行初始化。對于非靜態(tài)域,在類的實例創(chuàng)建時進行初始化。19. 雖然域和屬性語法類似,但不能把屬性當作變量那樣使用。也不能把屬性當作引用型參數(shù)或輸出型參數(shù)進行傳遞。在屬性的訪問聲明中,對屬性的值的訪問用get關鍵字標出。對屬性的值的寫制作用set標出。.20. 不直接制作類的數(shù)據(jù)內容,而是通過訪問器進行訪問,它借助get和set對屬性值進行讀寫。事件和索引指示器1. 事件所聲明的類型必須是一個代表類型(delegate),代表類型應預先聲明。2. 在編寫類的時

18、候,我們可以編寫事件向客戶說明發(fā)生了什么事情。事件可以在類的屬性或域中加以說明,但事件的類型必須是代表型的。我們可以預訂事件確保事件初觸發(fā)或撤消觸發(fā)。.3. 索引指示器為我們象使用數(shù)組那樣為類或類的實例添加路徑列表,通過下標進行訪問類中的信息。4. 事件的聲明格式:例:publiceventeventhandlerclick;這個省略了事件訪問聲明。.5. publiceventeventhandlerclick。這個沒有省略事件訪問聲明。大多數(shù)情況下不用事件訪問聲明。.6. 索引指示器:IPaddressm_arrayips;publicvoidIPaddressthisintnindexg

19、etreturnm_arrayipsintnindex;this代表實例,我們象使用數(shù)組那樣為類或類的實例添加路徑列表.實例i實際上代表的是類中的屬性或域的信息列表。實例i.繼承1. C#中,一個派生類只能從一個類中繼承。Object類為所有類的基類。2. 虛方法:當類中的方法聲明前加了virtual,我們稱為虛方法,它在執(zhí)行時可以被派生類改變。派生類中Override+虛方法。虛方法在基類中定義,則基類運行虛方法時會實際運行派生類中的方法。還必須指明,基類實例=派生類實例。.3. 抽象類:abstract.抽象類只能作為其它類的基類,不能直接實例化。如果一個非抽象類從抽象類中派生,則其必須通

20、過重載來實現(xiàn)所有繼承而來的抽象成員。抽象類是特殊的虛類。.4. 在派生類中重新定義虛方法,要求方法名稱,參數(shù)個數(shù)和類型必須與基類虛方法完全一致。5. 只能在抽象類中聲明抽象方法。抽象類可以作為非抽象類的基類,也可以作為派生類。我們可以利用抽象方法來重載基類虛方法,這時基類中的虛方法就被攔截了。.6. 密封類不能繼承,密封類不能同時又是抽象類,抽象類總是希望被繼承。密封類不可能有派生類,如果密封類中有虛成員函數(shù),則該成員可以轉化成非虛的,virtual無效。.7. 密封方法可以防止方法的重載。不是所有成員方法都可以作為密封方法,密封方法必須對基類的虛方法進行重載,提供具體的實現(xiàn)方法。所以,在方法

21、的聲明中,sealed修飾符總是和override修符同時使用。.8. 抽象屬性,抽象方法只允許在抽象類中聲明。抽象類的這些成員交給派生類去實現(xiàn)。必須在非抽象類中重載抽象屬性,非抽象類不允許存在抽象成員。屬性聲明時如果有sealed,則必須同時有override.修飾符。.9. 抽象方法在派生類中不能用base關鍵字會訪問。接口1. 每個組件都是獨立的,有其獨特的功能,只能通過接口與外界通訊,當一個組件需要提供新的服務時,可以通過新的接口來實現(xiàn)。.2. 組件應該具有與編程語言無關的特性。組件模型是一種規(guī)范,不管采用哪種語言設計組件,都必須遵守這一規(guī)范。3. 在接口的聲明體中,可以定義接口的成員

22、,接口的成員可以是方法,屬性,索引指示器和事件。4. 接口繼承和類繼承不同,接口繼承只是說明繼承。C#中類繼承只能是單繼承,但接口可以是多繼承。被繼承...8.9.10.CTGS-資料文件的接口應該是訪問得到的,不能從private或internal類型的接口中繼承。.對一個接口的繼承也就繼承了這個接口的所有成員。接口成員不能是常量,域,制作符,構造函數(shù)或析構函數(shù),而且不能包括所有的靜態(tài)成員。接口成員默認的訪問方式是public,接口成員聲明不能包含任何修飾符。與不能加abstra

23、ct,public,protected如果底層成員的命名與高級成員的命名一樣,那么底層成員將覆蓋同名高級成員。但由于接口的多繼承性,如果兩個父成員具有兩個相同名的成員,這就產(chǎn)生了兩義性,這時需要顯示聲明,明確指出需要調用哪個父接口成員。.我們只需要記住一點:一旦成員被覆蓋以后,所有對其的訪問都被覆蓋后的成員“攔截”。接口定義不包括方法的實現(xiàn)部分,接口可以通過類和結構來實現(xiàn)。用類來實現(xiàn)接口的時候,接口名稱必須包含在類聲明的基類列表中。如:classA:isequence,itest,如果類實現(xiàn)了接口,那么類也隱式地繼承了該接口的所有父接口,不管這些父接口有沒有在類的聲明的基類列表中出現(xiàn)。.一個類

24、可以實現(xiàn)多個接口。如果類中每個成員都明顯地指出了被實現(xiàn)的接口,通過這種途徑被實現(xiàn)的接口我們稱之為顯式接口成員。顯式接口成員只能通過接口調用,而不能通過類調用。.不能在方法調用,屬性訪問,以及索引指示器訪問中通過全權名訪問顯式接口成員執(zhí)行體。事實上,顯式接口成員執(zhí)行體只通過接口的實例,僅僅引用接口的成員名稱來訪問。.顯式接口成員執(zhí)行體的接口必須顯式地出現(xiàn)在類的基類列表中,即使類隱式的實現(xiàn)了接口。接口的成員包括它自己聲明的成員,而且包括該接口所有父接口聲明的成員。在接口的映射上,不僅要對接口聲明中顯式聲明的所有成員進行映射,而且要對隱式地從父接口中繼承而來的接口成員進行映射。包括與父接口中相同名稱

25、的成員。.類必須為所有基類表中列出的所有接口成員提供具體的實現(xiàn)。類中使用Private,protected和static修飾符的成員不能參與實現(xiàn)接口的映射。如果子接口成員要覆蓋父接口的成員,成員的名字必須相同,而且子接口成員名稱前用new.一個類繼承了它的基類提供的所有接口的實現(xiàn)。如果不顯式的重新實現(xiàn)接口,派生類就無法改變從基類中繼承來的接口映射。.顯式說明的接口成員不能被聲明為虛的。但可以通過顯式接口實現(xiàn)調用另一個方法,這個被調用的方法可以聲明為虛的。允許被派生類重載。.繼承了接口實現(xiàn)的類可以對接口進行重實現(xiàn),這個接口要求是在類聲明的基類列表中出現(xiàn)過的。抽象類允許將接口的方法映射到抽象的成員方法。顯式說明的接口成員不能是抽象的,但它允許調用抽象的方法。組織應用程序使用普通的函數(shù)庫,在程序鏈接時將庫中的代碼拷貝到可執(zhí)行文件中,這叫動態(tài)鏈接庫不一樣,只有程序在使用時才將其拷貝,并且只有一份拷貝。僅包括可執(zhí)行代碼,而且通常還包括了各種類型的預定義數(shù)據(jù)和資源。裝配有兩種類型:應用程序和庫。應用程序都有一個入口,能常擴展名為:靜態(tài)鏈接。動態(tài)鏈接庫是一種程序模塊,它不.exe。庫的擴展名:.dll.名字空間的聲明要么在編譯單元(源文件)第一行,要么作為成員也現(xiàn)在別的名字空間中。名字空間的成員可以是類,結構,枚舉,或代

溫馨提示

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

最新文檔

評論

0/150

提交評論