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

下載本文檔

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

文檔簡介

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

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

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

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

5、legate int Mydelegate(). 在使用的時候: Mydelegate d=new Mydelegate(p.instanceMethod). 為什么不用 delegate d=new Mydelegate(p.instanceMethod)呢?原因是 delegate相當于 class需要一個名字,class myclass 這個class的名字是 myclass而且它包含有其它元素、常數或者函數,變量等。跟 char a=a不同,它不包含有 其它的元素,a就是一個變量。而 myclass不是變量,它只一個名字。而myclass a=new myclass(); a 才是變量

6、,是類的一個實例。在這里,這個delegate的名字是Mydelegate ,也并不是一個變量。16. 變量 從用戶角度來說,是存儲信息的基本單元,從系統角度來說,變量就是計算機內存中的一個儲存空間。17. 靜態方法不能用類的實例來訪問,必須用類名來訪問。18. 數組的聲明 :數組的類型 數組的元素個數 數組的名字 ;數組個數 可以通過數組名加圓點加 Length 獲得。如 arr.Length表示arr數組的個數.19. 在進行批量處理數據的時候 ,我們要用到數組 .數組是一組類型相同的有序數據.20. 數組的初始化:int a1= new int1,2,3;為什么是new int,而不是n

7、ew a1呢:因為int是類型,a1是int類型的一個實例.而且a1所代表的是1,2,3,并不是函數 與delegate int Myclass();不同,Myclass()雖然是一個名字 但它可 以代表一個函數 ,不是常數 .原則 :類型后面的名字如果可以代表函數,則這個名字就是一種類型.如果類型后面的名字代表常數 ,則這個名字不是一種類型 ,只是類型的一個變量.或者可以用另一種說法:如果名字后面含有(),則在賦值或設定實例的時候new后面要用該名字作為類型.21. 變量名不能與C#中的關鍵字名稱相同。變量名不能與C#中庫函數名稱相同。22. 靜態變量: static int a; 一旦靜態

8、變量所屬的類被加載,直到包含該類的程序運行結束前它將一直存在。.CTGS-資料文件23. 穩性數據轉換實際上就是從低精度的數據轉換成高精度的的數據類型。如:ushort轉換成int.24. 隱式枚舉轉換允許把十進制數0轉換成任何枚舉類型,對其它整數則不存在這種隱式轉換。25. 從元素類型為TS的數組類型S到元素類型為Tt的數組類型T轉換,如果元素類型為值類型,則不能進行隱 式轉換。.顯式數值轉換顯武坡值轉換足指當不存在相應的隱式轉換時,從-種數了類型到另-種數了婁 型的轉換q包括 從 sbyte 到 byt巴 ushoil. uint. iilong.或 cliai o 從 bjle 到 sb

9、yle 或 clur3 從 shoit 至U sbyte, byte, ushort, unit, ulong. diarg 從 uslijoii 到 sbyte. byt亡.slioit.或 cliai: X int fl sbyte. bTe. short, ushort. niiiL nlotig. 或 char 6 從 niiit 至U sbe. byre, sliort. nsliort. uit char< * longbyt亡* byte, short, ushort. int* uint. ulong. 或 cliara 從 ulong 到 sbytc. byte, sh

10、ort, ushort intb uuit5 long,或 diara 從 chai-到 sbje. byre.或 shoru 從 float 貝I sbyt亡* byte, shoit. nshoii. iiit. iiint. long, iilong. char. 或 deciinnL 從 double 到 sbytc. bytu short ushort. intb uiiit, long, idoug. char, float, or f戈26. 有一個元素類型為int的枚舉類型E,則當執行從E到byte的顯示枚舉類型轉換時,實際上作的是從int到byte的顯示數字轉換。當執行從by

11、te到E的顯式枚舉轉換時,實際上是執行byte到int的隱式數字轉換。女口: Weekday day;day=(Weekday) 3;實際上是 E到byte的顯示枚舉類型轉換。27. 如何使用枚舉:enumColorred=0, yellow, blue,green,purple;Color color_arr = newColor ();Color_arr=(Color) 2;Console.WriteLine(“ Color_arr0 ” ,Color_arr);則其輸出結果為blue.28. 賦值制作符(=)和條件制作符(?:)按照右結合的原則,即制作從右到左的順序執行。Y=(x>

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

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

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

15、e.如果 想遍歷其它語句, 則可以加入下面兩條跳轉語句: goto case lable: 跳至標簽語句執行。 Goto default: 跳至 default 標簽執行。 .7. 數組的初始化 :int a1=new int1,2,3,4,58. 在事先知道循環次數的條件下,用 for 循環是比較方便的。9. while 語句 中允許使用 break 語句來結束循環。 也可以使用 continue 語句來停止內嵌語句的執行, 繼續進行 while循環。 .10. 可以使用break和continue語句來控制循環的表達。女口 :要求打印除7以外的0到9的語句,只需要在到打印7的時候,跳出打印

16、語句就可以了。 For(int i=0;i<9;i+) if i=7 continue;console.write(i);.11. foreach(Myint x in Prime)12. 預編譯和條件編譯都是以 #開頭的。可以幫助我們在程序執行過程中發出編譯的不對或警告。13. 溢出的處理用 checked 來檢測。14. 預處理指令如果出現在其它輸入輸出元素中間就不會被執行。中writeLine或Readline等中間。.三類1. C#中的類只支持單繼承。2. 對類成員的訪問: 1. 公有成員。 Public ,允許外部訪問。 2. 私有成員。 Private, 只允許類中的成員訪問

17、。 派生類 都不能訪問。 3. 保護成員。 Protected. 方便派生類的直接訪問, 同時又希望對外部是隱藏的。 4. 內部成員。 Internal.對于同一包內的程序或庫是透明的。而對于包外是隱藏的。.5. 類中的成員 要么是靜態要么是非靜態。 一般來說, 靜態成員是屬于類所有, 非靜態成員則屬于類的實例對象。訪問的時候:靜態:類名.成員名。非靜態:實例名.成員名(this.成員名)static .6. 關鍵字const用于聲明常量,后跟數據類型的聲明。例:public con st double x=1.0;.7. 構造函數 不聲明返回類型 ,構造函數用于執行類的實例的初始化。8. 折

18、構函數 在類的實例超出實用范圍時, 我們希望收回它所占的存儲時使用。 析構函數跟類名相同, 只是在前面加 上一個符號:.9. 值參數 :使用 值參數 時,初調用的方法不會修改內存中 實參的值 。 引用型參數: 引用型參數并不開辟新的內存區域。 當利用引用型參數向方法傳遞形參時, 編譯程序將把實際參數所 在內存中的地址傳遞給方法。.10. substring(0,i) 從此實例檢索子字符串。子字符串從指定的字符位置開始且具有指定的長度。 String.indexof(char)報告指定 Unicode 字符在此字符串中的第一個匹配項的索引.11. 輸出型參數:輸出型參數也不開辟新內存,跟引用型參

19、數一樣, 只是引用型參數在使用的時候不用需要對變量進行初始化,引用型參數用于傳遞方法的返回數據。.12. 如果形參中包含了數組參數,那么它必須在參數表中位于最后。另外,參數只允許一維數組。13. 靜態方法 可以訪問類中的靜態成員,但不能訪問非靜態成員。 但可以將類的實例當作參數傳遞給方法使用,指明具體的調用對象,這時就可以制作實例的靜態和非靜態成員了。.14. 類的方法的重載 :方法的名字相同,但 參數個數或類型不同 ,編譯器 就能知道在什么時候調用什么方法。15. C# 中,制作符重載 總是在類中聲明, 并且通過調用類的成員方法來實現。 制作符重載可以適用于類的 實例的CTGS-資料文件制作

20、。16. 靜態域的聲明用 static 修飾符。無論建立多少個該類的實例,內存中只存在一個靜態數據拷貝。域相當于簡單 成員變量。在另一個類對靜態域的訪問可以通過對靜態域所在類的 public 方法進行訪問。 .17. 簡單地說: const 型表達式 的值在編譯時形成, 而只讀域 static readonly 表達式的值在程序運行時才形成。 這 種方法有利于版本的控制。 .18. 對于靜態域,類在裝載時對其進行初始化。對于非靜態域,在類的 實例創建 時進行初始化。19. 雖然域和屬性語法類似, 但不能把屬性當作變量那樣使用。 也不能把屬性當作引用型參數或輸出型參數進行傳 遞。在屬性的訪問聲明

21、中,對屬性的值的訪問用 get關鍵字標出。對屬性的值的寫制作 用set標出。.20. 不直接制作類的數據內容,而是通過訪問器進行訪問,它借助get和set對屬性值 進行讀寫。事件和索引指示器1. 事件所聲明的類型 必須是一個代表類型 (delegate), 代表類型應預先聲明。2. 在編寫類的時候,我們可以編寫事件向客戶說明發生了什么事情。事件可以在類的屬性或域 中加以說明,但事件的類型必須是 代表型 的。我們可以預訂事件確保事件初觸發或撤消觸發。.3. 索引指示器為我們象使用 數組那樣 為類或類的實例添加路徑列表,通過 下標進行訪問類中的信息。4. 事件的聲明格式:例: public eve

22、nt eventhandler click;這個省略了事件訪問聲明。 .5. public event eventhandler click 。 這個沒有省略事件訪問聲明。大多數情況下不用事件訪問聲明。.6. 索 引 指 示 器 : IPaddress m_arrayips;public void IPaddress thisint nindex getreturnm_arrayips int nindex ;this 代表實例,我們象使用 數組那樣 為類或類的實例添加路徑列表 . 實例 i 實際 上代表的是 類中的屬性或域的信息列表 。實例 i.繼承1. C#中,一個派生類只能從一個類中繼承

23、。Object類為所有類的基類。2. 虛方法 :當類中的方法聲明前加了 virtual ,我們稱為虛方法,它在執行時可以被派生類改變。派生類中Override+ 虛方法。虛方法在基類中定義,則基類運行虛方法時會實際運行派生類中的方法。還必須指明,基類實例=派生類實例。.3. 抽象類 :abstract. 抽象類只能作為其它類的基類,不能直接實例化。如果一個非抽象類從抽象類中派生,則其必須通過 重載來實現所有繼承而來的抽象成員。抽象類是特殊的虛類。.4. 在派生類中重新定義虛方法,要求方法名稱,參數個數和類型必須與基類虛方法完全一致。5. 只能在 抽象類 中聲明 抽象方法 。 抽象類 可以作為非

24、抽象類的基類,也可以作為派生類。我們可以利用抽象方法來重載基類虛方法,這時基類中的 虛方法 就被攔截了。 .6. 密封類不能繼承 ,密封類不能同時又是抽象類,抽象類總是希望被繼承。密封類不可能有派生類,如果密封 類中有虛成員函數,則該成員可以轉化成非虛的, virtual 無效。 .7. 密封方法 可以防止方法的重載。不是所有成員方法都可以作為密封方法,密封方法必須對基類的虛方法進行重載,提供具體的實現方法。所以,在方法的聲明中,sealed 修飾符總是和 override 修符同時使用。 .8. 抽象屬性,抽象方法 只允許在 抽象類 中聲明。抽象類的這些成員交給派生類去實現。必須在非抽象類中

25、重載抽象屬性,非抽象類不允許存在抽象成員。屬性聲明時如果有sealed ,則必須同時有 override. 修飾符。 .9. 抽象方法 在派生類中不能用base關鍵字會訪問。接口1. 每個組件都是獨立的,有其獨特的功能,只能通過接口與外界通訊,當一個組件需要提供新的服務時,可以 通過新的接口來實現。 .2. 組件 應該具有與編程語言無關的特性。組件模型是一種規范,不管采用哪種語言設計組件,都必須遵守這一 規范。3. 在接口的聲明體中, 可以定義接口的成員,接口的成員可以是方法,屬性,索引指示器和事件。4. 接口繼承和類繼承不同,接口繼承只是說明繼承。C#中類繼承只能是單繼承,但接口可以是多繼承

26、。被繼承...8.9.10.CTGS-資料文件的接口應該是訪問得到的,不能從 private 或 internal 類型的接口中繼承。 . 對一個接口的繼承 也就繼承了這個接口的所有成員。接口成員不能是常量,域,制作符,構造函數或析構函數,而且不能包括所有的靜態成員。接 口 成 員 默 認 的 訪 問 方 式 是 public , 接 口 成 員 聲 明 不 能 包 含 任 何 修 飾 符 。 與 不 能 加 abstract,public,protected 如果 底層成員的命名

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

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

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

溫馨提示

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

評論

0/150

提交評論