2023年C#學習筆記c重點_第1頁
2023年C#學習筆記c重點_第2頁
2023年C#學習筆記c重點_第3頁
2023年C#學習筆記c重點_第4頁
2023年C#學習筆記c重點_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C#學習筆記.C#具有所有面向?qū)ο蟮恼Z言的所有特性:封裝,繼承,多態(tài)。在C#系統(tǒng)中,所有的類型都可以看作一個對象。C#只允許單繼承,即一個類不會有多個基類,C#不會有全局函數(shù),不會有全局變量,不會有全局常數(shù),所有的i切只能封裝在i個類中。..net涉及四個部分:vos類型系統(tǒng);元數(shù)據(jù);公用語言規(guī)范;虛擬執(zhí)行系統(tǒng)。.usingsystem表達導入名稱空間。.讓我們從第一個程序開始就記得:每個東西都必須屬于一個類,類里面的方法總是為我們完畢某件工作的。在C#中,程序的執(zhí)行總是從main()方法開始的,一個程序中不允許出現(xiàn)兩個或兩個以上的main。方法。對于習慣學C控制臺程序的讀者,必須要牢記:main。方法必須包含在一個類中。.運用string可以方便地對字符串進行連接或剪切。例:strings="g。od"+“moming”;charx=s[3]字符串可以通過下標進行索引,得到一個字符。.我們可以用〃進行單行標注,/**/進行多行標注。.在C和C++中,任何非0值都表達真,在C#中,任何非0值都不能代替Irue.在其它類型的整型值和布爾值之間不存在任何的轉(zhuǎn)換,將整型轉(zhuǎn)換成布爾型是不合法的。。.把一系列相關(guān)的變量組織成單一實體的過程稱為生成結(jié)構(gòu)的過程。這個單一實體的類型叫結(jié)構(gòu)類型,每一個變量就是結(jié)構(gòu)的成員。.結(jié)構(gòu)類型包含的成員類型可以相同,也可以不同。我們甚至可以把一個結(jié)構(gòu)類型當作另一個結(jié)構(gòu)成員的類型。.枚舉事實上是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號。結(jié)構(gòu)類型變量的值由各個成員的值組合而成。而枚舉則不同,枚舉類型的變量在某一時刻只能取枚舉中某個元素的值。按照系統(tǒng)的設(shè)定,每個元素的類型都為整型。且第一個元素的值為0,后面的每個元素梯加1,也可以直接賦值。如把前面第一個元素的值設(shè)為1,后面的元素不用設(shè),系統(tǒng)自動將后面元素的值遞加1..C#中另一大數(shù)據(jù)類型是引有類型。其含義是該類型的變量不直接存儲所包含的值,而由于接口的多繼承性,假如兩個父成員具有兩個相同名的成員,這就產(chǎn)生了兩義性,這時需要顯示聲明,明確指出需要調(diào)用哪個父接口成員。.我們只需要記住一點:一旦成員被覆蓋以后,所有對其的訪問都被覆蓋后的成員“攔截”。.接口定義不涉及方法的實現(xiàn)部分,接口可以通過類和結(jié)構(gòu)來實現(xiàn)。用類來實現(xiàn)接口的時候,接口名稱必須包含在類聲明的基類列表中。如:classA:isequenee,itest,假如類實現(xiàn)了接口,那么類也隱式地繼承了該接口的所有父接口,不管這些父接口有沒有在類的聲明的基類列表中出現(xiàn)。.一個類可以實現(xiàn)多個接口。假如類中每個成員都明顯地指出了被實現(xiàn)的接口,通過這種途徑被實現(xiàn)的接口我們稱之為顯式接口成員。顯式接口成員只能通過接口調(diào)用,而不能通過類調(diào)用。.不能在方法調(diào)用,屬性訪問,以及索引指示器訪問中通過全權(quán)名訪問顯式接口成員執(zhí)行體。事實上,顯式接口成員執(zhí)行體只通過接口的實例,僅僅引用接口的成員名稱來訪問。.顯式接口成員執(zhí)行體的接口必須顯式地出現(xiàn)在類的基類列表中,即使類隱式的實現(xiàn)了接口。.接口的成員涉及它自己聲明的成員,并IL涉及該接口所有父接口聲明的成員。在接口的映射上,不僅要對接II聲明中顯式聲明的所有成員進行映射,并且要對隱式地從父接II中繼承而來的接口成員進行映射。涉及與父接口中相同名稱的成員。.類必須為所有基類表中列出的所有接口成員提供具體的實現(xiàn)。.類中使用Private,protected和static修飾符的成員不能參與實現(xiàn)接口的映射。.假如子接口成員要覆蓋父接口的成員,成員的名字必須相同,并且子接口成員名稱前用new..一個類繼承了它的基類提供的所有接LI的實現(xiàn)。假如不顯式的重新實現(xiàn)接口,派生類就無法改變從基類中繼承來的接口映射。.顯式說明的接II成員不能被聲明為虛的。但可以通過顯式接口實現(xiàn)調(diào)用另一個方法,這個被調(diào)用的方法可以聲明為虛的。允許被派生類重載。.繼承了接口實現(xiàn)的類可以對接II進行重實現(xiàn),這個接口規(guī)定是在類聲明的基類列表中出現(xiàn)過的。.抽象類允許將接口的方法映射到抽象的成員方法。顯式說明的接口成員不能是抽象的,但它允許調(diào)用抽象的方法。組織應(yīng)用程序.使用普通的函數(shù)庫,在程序鏈接時將庫中的代碼拷貝到可執(zhí)行文獻中,這叫靜態(tài)鏈接。.動態(tài)鏈接庫不同樣,只有程序在使用時才將其拷貝,并且只有一份拷貝。動態(tài)鏈接庫是一種程序模塊,它不僅涉及可執(zhí)行代碼,并且通常還涉及了各種類型的預(yù)定義數(shù)據(jù)和資源。.裝配有兩種類型:應(yīng)用程序和庫。應(yīng)用程序都有一個入口,能常擴展名為:.exe。庫的擴展名:.dll..名字空間的聲明要么在編譯單元(源文獻)第一行,要么作為成員也現(xiàn)在別的名字空間中。.名字空間的成員可以是類,結(jié)構(gòu),枚舉,或代表等。也可以是另一個名字空間。.別名指示符為我們提供了一個標記符,在整個編譯單元,或是在名字空間主體之中,這個標注符作為名字空間或類型的別名。.別名指示符不能與同一編譯單元或名字空間中的其它成員重名。別名只在包含它名字空間的主體內(nèi)有效,但把別名放到名字空間外部,編譯單元內(nèi),則別名對于編譯單元內(nèi)的所有名字空間是有效的。.假如名字空間使用指示符使用了名字空間,但沒有指出使用其嵌套的名字空間,則只能可以使用直接使用該名字空間中的成員,而不能直接使用其嵌套成員。.可以using類型、名字空間。.注意別名指示符不能與同一編譯單元或名字空間的中的其它它成員同名。文獻操作system.IO提供的類:支持輸入輸出的類型:stream,fileinf。,Directory,BinaryReader,BinaryWriter.。。。文獻是存儲在永久介質(zhì)中的數(shù)據(jù)的有序集合。流也是一種對數(shù)據(jù)讀寫操作的基本對象,但它除了文獻流外,尚有其它多種類型,可以分布在網(wǎng)絡(luò)中,內(nèi)存和磁帶中。Directory類進行目錄管理。File類進行文獻管理。讀寫文獻:按文本模式讀寫:streamreader,streamwriter.按二進制讀寫文本流:BinaryReader,BinaryWriter.FileStream(String,FileMode):Fi1eMode.open0rCreateFilestreamfileStream=newFileStream(fileName,FileMode.Create)Bina「yW/iter(Stream)BinaryWriterbinWriter=newBinaryWriter(Fi1e.Open(fi1eName,FileMode.Create));binWriter.Write(showStatusBar);將字符串的內(nèi)容showStatusBar以二進制方式寫入流stream。并根據(jù)所使用的編碼和寫入流的特定字符,提高流的當前位置(流的長度).是指向它所要存儲的值。也就是說引用類型存儲實際數(shù)據(jù)引用值的地址。.類是面向?qū)ο缶幊痰幕締挝唬且环N包含數(shù)據(jù)成員,函數(shù)成員和嵌套類型的數(shù)據(jù)結(jié)構(gòu)。類和結(jié)構(gòu)都包含了自己的成員,但它們的區(qū)別是:類是引用類型,而結(jié)構(gòu)是值類型。.假如我們對某個類定義了一個變量,則我們就將它稱為類的一個實例。.我們常用到的類:。bject類。這個類是其它所有類的基類,其它類型可以直接或間接地從object類中繼承。因此,對一個。bject類的變量可以賦于任何類型的值。.代表?在聲明代表時,只需要指定代表指向的原型的類型,它不能有返回值,也不能帶有輸出類型的參數(shù)。如:delegateintMyde1cgate().在使用的時候:Mydelegated=newMydelegate(p.instanceMethod).為什么不用de1egated=newMydelegate(p.instanccMcthod)呢?因素是de1egate相稱于class需要一個名字,classmyc1ass{…}這個class的名字是myclass并且它包具有其它元素、常數(shù)或者函數(shù),變量等。跟chara=a不同,它不包具有其它的元素,a就是一個變量。而myclass不是變量,它只一個名字。而myc1assa=newmyc1ass();a才是變量,是類的一個實例。在這里,這個delegate的名字是Mydelegate,也并不是一個變量。.變量從用戶角度來說,是存儲信息的基本單元,從系統(tǒng)角度來說,變量就是計算機內(nèi)存中的一個儲存空間。.靜態(tài)方法不能用類的實例來訪問,必須用類名來訪問。.數(shù)組的聲明:數(shù)組的類型[數(shù)組的元素個數(shù)]數(shù)組的名字;數(shù)組個數(shù)可以通過數(shù)組名加圓點加Length獲得。如arr.Length表達arr數(shù)組的個數(shù).在進行批量解決數(shù)據(jù)的時候,我們要用到數(shù)組.數(shù)組是一組類型相同的有序數(shù)據(jù)..數(shù)組的初始化:inl口al=newint[]{1,2,3};為什么是new而不是newal呢油于int口是類型,al是int口類型的一個實例拼且a1所代表的是[1,2,3},并不是函數(shù).與delegateintMyclass();不同,Myc1ass()雖然是一個名字,但它可以代表一個函數(shù),不是常數(shù).原則:類型后面的名字假如可以代表函數(shù),則這個名字就是一種類型.假如類型后面的名字代表常數(shù),則這個名字不是一種類型,只是類型的一個變量.或者可以用另一種說法:假如名字后面具有(),(},口則在賦值或設(shè)定實例的時候new后面要用該名字作為類型..變量名不能與C#中的關(guān)鍵字名稱相同;變量名不能與C#中庫函數(shù)名稱相同。.靜態(tài)變量:staticinta;一旦靜態(tài)變量所屬的類被加載,直到包含該類的程序運營結(jié)束前它將一直存在。.穩(wěn)性數(shù)據(jù)轉(zhuǎn)換事實上就是從低精度的數(shù)據(jù)轉(zhuǎn)換成高精度的的數(shù)據(jù)類型。如:ushort轉(zhuǎn)換成int..隱式枚舉轉(zhuǎn)換允許把十進制數(shù)0轉(zhuǎn)換成任何枚舉類型,對其它整數(shù)則不存在這種隱式轉(zhuǎn)換。.從元素類型為TS的數(shù)組類型S到元素類型為Tt的數(shù)組類型T轉(zhuǎn)換,假如元素類型為值類型,則不能進行隱式轉(zhuǎn)換。顯式數(shù)值轉(zhuǎn)換顯式數(shù)值轉(zhuǎn)換是指當不存在相應(yīng)的隙式轉(zhuǎn)換時,從一種數(shù)字類型到另一種數(shù)字類型的轉(zhuǎn)換。包括:從sbyte至ljbyte,ushort.uiiit.ulong.或char。從byte到sbyte或cliar0從short至ljsbyte.byte,ushort.uiiit.ulong.或char。從uslion至ljsbyte.byte,short.或charo從int到sbyte.byte.short,ushoil.uint.ulong.或char。從uint到sbyte.byte.short,ushort.iiit.或char。從long到sbyte.byte.short.ushort.iiit.iiiiit.ulong.或char。從ulong到sbyte.byte,short,ushort.iiit.uint.long.或char:從chai,到sbyte.byte.或short。從float至ljsbyte.byte,short,.uiiit.long,ulong.char.或decimal。從double到sbyte.byte,short,.uiiit.long,ulong.char,float,or或.有一個元素類型為int的枚舉類型E,則當執(zhí)行從E到byte的顯示枚舉類型轉(zhuǎn)換時,事實上作的是從int到byte的顯示數(shù)字轉(zhuǎn)換;當執(zhí)行從byte到E的顯式枚舉轉(zhuǎn)換時,事實上是執(zhí)行byte到int的隱式數(shù)字轉(zhuǎn)換。如:Weekdayday;day;(Weekday)3;事實上是E到byte的顯示枚舉類型轉(zhuǎn)換。.如何使用枚舉:enumColor(red=0,yel1ow,bluc,green,purp1c};Colorco1orarr=newColor():Co1or_arr=(Color)2;Console.WriteLineC*Color^arr{0}*\Colorarr);則其輸出結(jié)果為blue..賦值操作符(=)和條件操作符(?:)按照右結(jié)合的原則,即操作從右到左的順序執(zhí)行。Y=(x>10?0:1).29,枚舉類型的加法:Weekdayday1=Weekday.Sunday;Weekdayday2=Weekday.Saturday;Weekdayday3=dayl+6;枚舉型加法事實上枚舉基類型元素相加即一般為(int型相加)。.假如兩個整數(shù)類型的變量相除又不能整除,返回結(jié)果是不大于相除之值的最大整數(shù)。.求余運算:5%3=2;5%1.5=0.5..as操作符用于通過引用轉(zhuǎn)換或裝箱轉(zhuǎn)換將一個值顯式地轉(zhuǎn)換成指定的引用類型。33?位運算符就是對數(shù)按二進制位進行運算的操作符。位運算中的異或運算,當兩個位相同時,異或運算結(jié)果為0,不相同時異或運算為1.移位運算,左稱位將操作數(shù)向左位移,高位被拋棄,低位順序補0.右移運算時,假如X為非負數(shù),最高位設(shè)為0;假如X為負數(shù),最高位設(shè)為1,即最大為一1.自增自減操作符:自增自減操作符有前綴和后綴之分。對于前綴操作符,遵行的原則是“先增減,后使用”,后綴則相反,“先使用,后增減”。new操作符:new操作符用于創(chuàng)建一個新的類型實例。它有三種形式:1,對象創(chuàng)建表達式。2,數(shù)組創(chuàng)建表達式。3代表創(chuàng)建表達式。lypeof操作符用于獲得系統(tǒng)原型對象的類型。check和uncheck操作符只影響其置于括號中的運算的溢出檢查。二流程控制C#提供的選擇語句有i「和swiich語句。假如i「或else語句包含的嵌套語句只包含一條執(zhí)行語句,則嵌套部分的大括號可以省略。每一條else與離它最近且沒有其它else與之配對的if相搭配。if語句僅允許布爾數(shù)據(jù)類型的結(jié)果。例:if(args.1ength=0)是對的的。而if(args.length)是不對的的。args.length返回一個整形數(shù)(integer)oswitch語句是只能有一個dcfauIt標簽。C#中它規(guī)定每個case標簽項后使用break語句或中轉(zhuǎn)語句goto,即不允許從一個case自動遍歷到其它case.假如想遍歷其它語句,則可以加入下面兩條跳轉(zhuǎn)語句:gotocaselable:跳至標簽語句執(zhí)行。Gotodefault:跳至defau1t標簽執(zhí)行。.數(shù)組的初始化:int口al=newint][]{1,2,3,4,5).在事先知道循環(huán)次數(shù)的條件下,用for循環(huán)是比較方便的。.whilc語句中允許使用break語句來結(jié)束循環(huán)。也可以使用continue語句來停止內(nèi)嵌語句的執(zhí)行,繼續(xù)進行while循環(huán)。.可以使用break和continue語句來控制循環(huán)的表達。如:規(guī)定打印除7以外的0到9的語句,只需要在到打印7的時候,跳出打印語句就可以了。For(inti=0;i<9;i++){ifi==7continue;conso1e.write(i);).forcach(MyintxinPrime){.預(yù)編譯和條件編譯都是以#開頭的??梢詭椭覀冊诔绦驁?zhí)行過程中發(fā)山編譯的錯誤或警告。.溢出的解決用checked來檢測。.預(yù)解決指令假如出現(xiàn)在其它輸入輸出元素中間就不會被執(zhí)行。中wrileLine或Read1ine等中間。三類1.C#中的類只支持單繼承。2.對類成員的訪問:1.公有成員。Pub1ic,允許外部訪問。2.私有成員。Privale,只允許類中的成員訪問。派生類都不能訪問。3.保護成員。Protected.方便派生類的直接訪問,同時又希望對外部是隱藏的。4.內(nèi)部成員。Internal.對于同一包內(nèi)的程序或庫是透明的。而對于包外是隘藏的。.類中的成員要么是靜態(tài)要么是非靜態(tài)。一般來說,靜態(tài)成員是屬于類所有,非靜態(tài)成員則屬于類的實例一對象。訪問的時候:靜態(tài):?類名.成員名;非靜態(tài):實例名.成員名(this.成員名)static.關(guān)鍵字const用于聲明常量,后跟數(shù)據(jù)類型的聲明。例:pub1icconstdoub1ex=l.0;.構(gòu)造函數(shù)不聲明返回類型,構(gòu)造函數(shù)用于執(zhí)行類的實例的初始化。.折構(gòu)函數(shù)在類的實例超過實用范圍時,我們希望收回它所占的存儲時使用。析構(gòu)函數(shù)跟類名相同,只是在前面加上一個符號:?.值參數(shù):使用值參數(shù)時,初調(diào)用的方法不會修改內(nèi)存中實參的值。引用型參數(shù):引用型參數(shù)并不開辟新的內(nèi)存區(qū)域。當運用引用型參數(shù)向方法傳遞形參時,編譯程序?qū)褜嶋H參數(shù)所在內(nèi)存中的地址傳遞給方法。10.substring(O.i)從此實例檢索子字符串。子字符串從指定的字符位置開始且具有指定的長度。String.indexof(char)報告指定Unicode字符在此字符串中的第一個匹配項的索引.11.輸出型參數(shù):輸出型參數(shù)也不開辟新內(nèi)存,跟引用型參數(shù)同樣,只是引用型參數(shù)在使用的時候不用需要對變量進行初始化,引用型參數(shù)用于傳遞方法的返回數(shù)據(jù)。12.假如形參中包含了數(shù)組參數(shù),那么它必須在參數(shù)表中位于最后。此外,參數(shù)只允許一維數(shù)組。.靜態(tài)方法可以訪問類中的靜態(tài)成員,但不能訪問非靜態(tài)成員。但可以將類的實例當作參數(shù)傳遞給方法使用,指明具體的調(diào)用對象,這時就可以操作實例的靜態(tài)和非靜態(tài)成員了。.類的方法的重載:方法的名字相同,但參數(shù)個數(shù)或類型不同,編譯器就能知道在什么時候調(diào)用什么方法。.C#中,操作符重載總是在類中聲明,并且通過調(diào)用類的成員方法來實現(xiàn)。操作符重載可以合用于類的實例的操作。.靜態(tài)域的聲明用Static修飾符。無論建立多少個該類的實例,內(nèi)存中只存在一個靜態(tài)數(shù)據(jù)拷貝。域相稱于簡樸成員變鼠。在另一個類對靜態(tài)域的訪問可以通過對靜態(tài)域所在類的PUblie方法進行訪問。17.簡樸地說:const型表達式的值在編譯時形成,而只讀域staticreadonly表達式的值在程序運營時才形成。這種方法有助于版本的控制。.對于靜態(tài)域,類在裝載時對其進行初始化;對于非靜態(tài)域,在類的實例創(chuàng)建時進行初始化。.雖然域和屬性語法類似,但不能把屬性當作變量那樣使用。也不能把屬性當作引用型參數(shù)或輸出型參數(shù)進行傳遞。在屬性的訪問聲明中,對屬性的值的訪問用get關(guān)鍵字標出。對屬性的值的寫操作用set標出。20.不直接操作類的數(shù)據(jù)內(nèi)容,而是通過訪問器進行訪問,它借助get和set對屬性值進行讀寫。事件和索引指示器.事件所聲明的類型必須是一個代表類型(deIegate),代表類型應(yīng)預(yù)先聲明。.在編寫類的時候,我們可以編寫事件向客戶說明發(fā)生了什么事情。事件可以在類的屬性或域中加以說明,但事件的類型必須是代表型的。我們可以預(yù)訂事件保證事件初觸發(fā)或撤消觸發(fā)。.索引指示器為我們象使用數(shù)組那樣為類或類的實例添加途徑列表,通過下標進行訪問類中的信息。.事件的聲明格式:例:publiceventeventhand1erclick;這個省略了事件訪問聲明。.pub1iceventeventhandlerclick。。}這個沒有省略事件訪問聲明。大多數(shù)情況下不用事件訪問聲明。.索引指示器:IPaddress口marrayips;publicvoidIPaddressthis[intnindex]{get{returnm_arrayips[intnindex]}};this代表實例,我們象使用數(shù)組那樣為類或類的實例添加途徑列表.實例[i]事實上代表的是類中的屬性或域的信息列表。實例[i].繼承.C#中,一個派生類只能從一個類中繼承。Object類為所有類的基類。.虛方法:當類中的方法聲明前加了virtual,我們稱為虛方法,它在執(zhí)行時可以被派生類改變。派生類中0verride+虛方法。虛方法在基類中定義,則基類運營虛方法時會實際運營派生類中的方法。還必須指明,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論