




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C#程序設(shè)計目錄>緒論>基礎(chǔ):控制語句、數(shù)據(jù)類型>類:方法、屬性、委托、事件>異常處理>窗體、控件>文件訪問、數(shù)據(jù)庫>繪圖第一章緒論C#特點C#是一種簡潔、類型安全的面向?qū)ο蟮恼Z言,開發(fā)人員可以使用它來構(gòu)建在.NETFramework上運行的各種安全、可靠的應(yīng)用程序。使用C#,您可以創(chuàng)建傳統(tǒng)的Windows客戶端應(yīng)用程序、XMLWebservices、分布式組件、客戶端-服務(wù)器應(yīng)用程序、數(shù)據(jù)庫應(yīng)用程序以及很多其他類型的程序。MicrosoftVisualC#2005提供高級代碼編輯器、方便的用戶界面設(shè)計器、集成調(diào)試器和許多其他工具,以在C#語言版本2.0和.NETFramework的基礎(chǔ)上加快應(yīng)用程序的開發(fā)。C#語法表現(xiàn)力強,而且簡單易學(xué)。C#的大括號語法使任何熟悉C、C++或Java的人都可以立即上手。C#語法簡化了C++的諸多復(fù)雜性,同時提供了很多強大的功能,例如可為空的值類型、枚舉、委托、匿名方法和直接內(nèi)存訪問。C#支持泛型方法和類型,從而提供了更出色的類型安全和性能。作為一種面向?qū)ο蟮恼Z言,C#支持封裝、繼承和多態(tài)性概念。所有的變量和方法,包括Main方法(應(yīng)用程序的入口點),都封裝在類定義中。類可能直接從一個父類繼承,但它可以實現(xiàn)任意數(shù)量的接口。重寫父類中的虛方法的各種方法要求override關(guān)鍵字作為一種避免意外重定義的方式。在C#中,結(jié)構(gòu)類似于一個輕量類;它是一種堆棧分配的類型,可以實現(xiàn)接口,但不支持繼承。C#還通過幾種創(chuàng)新的語言結(jié)構(gòu)加快了軟件組件的開發(fā),其中包括:封裝的方法簽名(稱為委托),它實現(xiàn)了類型安全的事件通知。屬性(Property),充當(dāng)私有成員變量的訪問器。屬性(Attribute),提供關(guān)于運行時類型的聲明性元數(shù)據(jù)。內(nèi)聯(lián)XML文檔注釋在C#中,如果需要與其他Windows軟件(如COM對象或本機(jī)Win32DLL)交互,可以通過一個稱為“Interop”的過程來實現(xiàn)?;ゲ僮魇笴#程序能夠完成本機(jī)C++應(yīng)用程序可以完成的幾乎任何任務(wù)。
在直接內(nèi)存訪問必不可少的情況下,C#甚至支持指針和“不安全”代碼的概念。C#的生成過程比C和C++簡單,比Java更為靈活。沒有單獨的頭文件,也不要求按照特定順序聲明方法和類型。C#源文件可以定義任意數(shù)量的類、結(jié)構(gòu)、接口和事件二.NETFramework平臺體系結(jié)構(gòu).NETFramework是Windows的一個必要組件,包括一個稱為公共語言運行時(CLR)的虛擬執(zhí)行系統(tǒng)和一組統(tǒng)一的類庫。CLR是Microsoft的公共語言基礎(chǔ)結(jié)構(gòu)(CLI)的一個商業(yè)實現(xiàn)。CLI是一種國際標(biāo)準(zhǔn),是用于創(chuàng)建語言和庫在其中無縫協(xié)同工作的執(zhí)行和開發(fā)環(huán)境的基礎(chǔ)。用C#編寫的源代碼被編譯為一種符合CLI規(guī)范的中間語言(IL)。IL代碼與資源(如位圖和字符串)一起作為一種稱為程序集的可執(zhí)行文件存儲在磁盤上,通常具有的擴(kuò)展名為.exe或.dll。程序集包含清單,它提供關(guān)于程序集的類型、版本、區(qū)域性和安全要求等信息。語言互操作性是.NETFramework的一個關(guān)鍵功能。因為由C#編譯器生成的IL代碼符合公共類型規(guī)范(CTS),因此從C#生成的IL代碼可以與從VisualBasic、VisualC++、VisualJ#的.NET版本或者其他20多種符合CTS的語言中的任何一種生成的代碼進(jìn)行交互。單一程序集可能包含用不同.NET語言編寫的多個模塊,并且類型可以相互引用,就像它們是用同一種語言編寫的。自定殳對隊庫托管顫樹ASP,NET(運行庫)Internee信息服務(wù)類庫運行庫 噪作系統(tǒng)/硬件托昔自定殳對隊庫托管顫樹ASP,NET(運行庫)Internee信息服務(wù)類庫運行庫 噪作系統(tǒng)/硬件托昔Web應(yīng)用程序三.命名空間namespace:用于聲明一個范圍。此命名空間范圍允許您組織代碼并為您提供了創(chuàng)建全局唯一類型的方法。四.Main方法Main方法是程序的入口點,您將在那里創(chuàng)建對象和調(diào)用其他方法。一個C#程序中只能有一個入口點。程序控制在該方法中開始和結(jié)束。該方法在類或結(jié)構(gòu)的內(nèi)部聲明。它必須為靜態(tài)方法,且不應(yīng)為公共方法。它可以具有void或int返回類型。聲明Main方法時既可以使用參數(shù),也可以不使用參數(shù)。如果使用參數(shù),則參數(shù)為string[]類型。參數(shù)可以作為從零開始索引的命令行參數(shù)來讀取。與C和C++不同,程序的名稱不會被當(dāng)作第一個命令行參數(shù)。第二章基礎(chǔ):控制語句、數(shù)據(jù)類型一?文檔注釋使用3個斜杠“///”符號:這種注釋可幫助用戶創(chuàng)建自定義外部文檔代碼。C#利用文檔注釋,使用XML的標(biāo)記來獲得程序代碼的XML文檔,即可把對一個程序的注釋轉(zhuǎn)換為一個文檔保存,所以文檔注釋又稱為XML注釋。標(biāo)識符與C/C++規(guī)定大致相同。C#語言的標(biāo)識符名稱必須遵守以下規(guī)則:>所有的標(biāo)識符只能由字母、數(shù)字和下劃線這三類字符組成,而且第一個字符必須為字母或下劃線;>標(biāo)識符區(qū)分大小寫;>標(biāo)識符不能與C#關(guān)鍵字名相同。關(guān)鍵字>關(guān)鍵字(Keyword)也稱為保留字,它是由系統(tǒng)預(yù)先定義好的標(biāo)識符,在C#語言中有特定的含義。四.變量變量的命名:符合標(biāo)識符的命名規(guī)則,最好“見名知意”變量的使用:變量必須先定義(聲明)后使用。[特征][修飾符]數(shù)據(jù)類型變量名1,?,變量名n;局部變量經(jīng)初始化后方可使用變量的作用域和生存周期:作用域定義了一個變量的可見性和生存周期。一個變量的生存周期被限制在它自身的作用域內(nèi)。作用域可以嵌套。在內(nèi)層作用域定義的變量不能和外層作用域中定義的變量重名>變量類型:■靜態(tài)變量:使用static修飾符定義的變量稱為靜態(tài)變量。對靜態(tài)變量的訪問只能通過類型名,而不能用實例名訪問。靜態(tài)變量的初始值就是該類型變量的默認(rèn)值。靜態(tài)變量最好在定義時賦值。實例變量:不使用static修飾符定義的變量稱為實例變量。例如:inta;(類中的實例變量,結(jié)構(gòu)中的實例變量)數(shù)組元素數(shù)組中每個元素的初始值為該數(shù)組元素類型的默認(rèn)值。數(shù)組元素最好在初始化時被賦值。■值參數(shù)值參數(shù)向方法中傳遞的是數(shù)據(jù)的值。引用參數(shù)當(dāng)一個帶有ref修飾符的參數(shù)被聲明時,稱為引用參數(shù);向它傳遞的不是值而是對調(diào)用變量的引用。輸出參數(shù)當(dāng)一個帶有out修飾符的參數(shù)被聲明時,稱為輸出參數(shù)。它只能用于傳遞方法返回的數(shù)據(jù),而不能向方法內(nèi)部傳遞參數(shù)?!鼍植孔兞烤植孔兞勘痪植孔兞柯暶髡Z句創(chuàng)建。當(dāng)控制權(quán)進(jìn)入block塊、for循環(huán)語句或者switch分支語句時,其中的相關(guān)局部變量被創(chuàng)建。當(dāng)控制權(quán)離開block塊、for循環(huán)語句或者switch分支語句時,其中的相關(guān)局部變量隨即失效。局部變量不會被自動初始化。在一個局部變量的有效范圍中,在它被聲明之前的所有關(guān)于它的引用都是錯誤的五.常量常量(Constant)是指在程序執(zhí)行過程中其值不能被改變的量。定義常量的一般格式為:constdoublePI=3.14159;六.C#運算符單目運算符:如-x、x++、sizeof(x);雙目運算符:如x+y、x%y;三目運算符:如條件運算符“?:”>運算符的優(yōu)先級運算符初級運算符(x)x.yRx)a[x]x++x??newtypeofsizeofcheckedunchecked單目運算符+?!*++x-x(T)x乘除運算符*/%力[]滅運算符+-移位運算符??關(guān)系運算符<><?>?isas等式運算符==1=邏輯與運算符&邏輯異或運算符A邏輯或運算符1條件與運算符&&條件或運算符II條件運算符?:賦值運算符=*=/= *?=VG?=&=5|s>賦值運算符一般的賦值運算賦值表達(dá)式的格式如下:變量=表達(dá)式;例如:inti=10;復(fù)合賦值:雙目運算符與賦值運算符的組合,簡化了賦值語句的書寫例如:a+=b;賦值中的類型轉(zhuǎn)換如果賦值運算發(fā)生在不同的數(shù)據(jù)類型之間,當(dāng)它們是兼容的數(shù)據(jù)類型時,則右邊的值自動轉(zhuǎn)換成左邊的變量類型。當(dāng)高精度向低精度轉(zhuǎn)換時必須使用顯式轉(zhuǎn)換>算術(shù)運算符+加法運算符,或正值運算符-減法運算符,或負(fù)值運算符*乘法運算符/除法運算符%模運算符或稱求余運算符,如7%3=1>關(guān)系運算符<(小于)、<=(小于等于)、>(大于)、>=(大于等于),==(等于)、!=(不等于)關(guān)系運算符用于兩個值進(jìn)行比較,其運算結(jié)果為true(真)或false(假)>邏輯運算符邏輯表達(dá)式的結(jié)果是一個布爾值,結(jié)果為真則為true,結(jié)果為假則為false。C#中的邏輯運算符如下: &&(邏輯與) ||(邏輯或)!(邏輯非)>位運算符位運算符是對其操作數(shù)按其二進(jìn)制形式逐位進(jìn)行運算,參加位運算的操作數(shù)必須為整型或者是可以轉(zhuǎn)換為整型的任何其他類型。C#中的位運算符如下:~(按位求反)、&(按位與)|(按位或)、’(按位異或)<<(左移)、>>(右移)>條件運算符表達(dá)式1?表達(dá)式2:表達(dá)式3例如:max=((a>b)?a:b)在C#中第一個操作數(shù)必須是一個布爾表達(dá)式,或者是可以轉(zhuǎn)換為布爾類型的表達(dá)式,否則編譯會出現(xiàn)錯誤。>自增、自減運算符自增(++)、自減(--)運算符都是單目運算符,其作用是以一種緊湊格式使變量的值自動增1或減1。運算符后置用法,代表先使用變量,然后對變量增值,運算符前置用法,代表先對變量增值,再使用變量>其他運算符new運算符:new操作符用于創(chuàng)建一個新的類型實例。例如:Aa=newA();int[]a=newint[10];is運算符變量(表達(dá)式)is數(shù)據(jù)類型as運算符表達(dá)式1=表達(dá)式2as數(shù)據(jù)類型Aa=null;if(oisA)a=oasA;typeof運算符typeof運算符可以獲得指定類型的System.Type對象。typeof表達(dá)式的一般格式為:typeof(類型)■sizeof運算符sizeof運算符用于計算所定義的數(shù)值型變量在內(nèi)存中占多少字節(jié)。sizeof表達(dá)式的一般格式為:第三章程序流程控制一.語句塊語句塊也被稱為復(fù)合語句,它是用一對花括號“{}”括起的語句序列假如此語句序列被省略,則稱塊為空。塊可以嵌套。if語句,還可以使用else-if方法處理多個條件switch語句:switch(表達(dá)式){case常量表達(dá)式1: {語句組1} break;……case常量表達(dá)式n:{語句組n} break;default:{語句組n+1} break;}(1)switch語句可以包括任意數(shù)目的case實例,但是任何兩個case語句都不能具有相同的值。語句體從選定的語句開始執(zhí)行,直到break將控制傳遞到case體以外。(2)在每一個case塊(不論它是case語句還是default語句)的后面,都必須有一個跳轉(zhuǎn)語句(如break)。(3)C#不支持從一個case標(biāo)簽顯式貫穿到另一個case標(biāo)簽。但有一個例外,這個例外是當(dāng)case語句中沒有代碼時。(4)switch語句后面括號中的表達(dá)式類型可以是string類型。while語句使用break語句結(jié)束while循環(huán),執(zhí)行后續(xù)語句;使用continue語句停止循環(huán)體的執(zhí)行,繼續(xù)進(jìn)行while循環(huán)。do-while語句同樣允許用break語句和continue語句for語句foreach語句foreach(變量類型循環(huán)變量in集合表達(dá)式){循環(huán)體}1.對數(shù)組使用foreach語句foreach語句可用來為數(shù)組中的每一個元素執(zhí)行一遍循環(huán)體中的語句。因為不需要數(shù)組中的元素直接參與運算,也不需要事先知道數(shù)組元素的個數(shù),所以對全體數(shù)組進(jìn)行操作時用foreach語句效率很高。2.對集合使用foreach語句通常要求集合必須實現(xiàn)IEnumerable和IEnumerator接口,才能使用foreach。3.通常foreach語句用于循環(huán)訪問集合以獲取所需信息,但不應(yīng)用于更改集合內(nèi)容以避免產(chǎn)生不可預(yù)知的副作classForEachTest{staticvoidMain(string[]args){int[]fibarray=newint[]{0,1,2,3,5,8,13};foreach(intiinfibarray){System.Console.WriteLine(i);}}}break語句break語句用于終止最內(nèi)層的while、do-while、for和switch語句的執(zhí)行。■當(dāng)程序遇到這一語句后,執(zhí)行緊接在被終止執(zhí)行的語句后面的語句?!銎湔Z法格式為:beak;>continue語句當(dāng)程序遇到這一語句后,停止當(dāng)前進(jìn)行的這次循環(huán)并把控制返回到當(dāng)前循環(huán)的頂部,以便于進(jìn)行下一次循環(huán)?!雠cbreak語句不同的是,continue語句不是終止整個循環(huán)的執(zhí)行,而僅僅終止當(dāng)前這一次循環(huán)的執(zhí)行。其語法格式為:continue;goto語句goto語句也能用來跳出循環(huán)和switch語句。它無條件地轉(zhuǎn)移程序的執(zhí)行控制,其轉(zhuǎn)移目的地是一標(biāo)號,因此要求標(biāo)號與goto語句處在同一個函數(shù)中。其語法格式為:goto標(biāo)號; gotocase表達(dá)式;gotodefault;由于大量或隨意使用goto語句會使程序的流程無規(guī)律,程序的可讀性降低,因此,目前該語句已經(jīng)很少使用。return語句return語句將程序執(zhí)行控制返回給該語句所在的函數(shù)成員的調(diào)用者。其語法格式為:return表達(dá)式;return語句的表達(dá)式是可選的。不能在finally塊中使用return語句。第四章條件編譯和控制臺輸入輸出一條件編譯C#的條件編譯主要依靠預(yù)處理指令:#if、#else、#elif和#endif,這四條預(yù)處理指令主要有以下四種基本組合方式:#if(判斷條件)?#endif#if(判斷條件)?#else?#endif#if(判斷條件)?#elif(判斷條件)?#endif#if(判斷條件)?#elif(判斷條件)…#else ?#endifC#語言使用#define來定義符號,其一般的定義形式為:#define符號>與#define相對應(yīng),#undef指令可以用來撤消定義的符號,其一般的定義形式為:#undef符號#undef和#define必須放在所有其他非注釋語句和非預(yù)處理指令語句的前面。二定義代碼塊指令#region和#endregion用來指定需要采用擴(kuò)展或者壓縮方式顯示的代碼段,一般的使用格式如下:#region字符串代碼塊#endregion#region和#endregion要配對使用,#region標(biāo)識代碼塊的頭,#endregion標(biāo)識代碼塊的尾。三.控制臺I/O是由System.Console類提供給用戶訪問標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出以及標(biāo)準(zhǔn)錯誤流Console.Read()方法Read()方法是一個靜態(tài)方法,調(diào)用的格式為: Console.ReadRead()方法每次從標(biāo)準(zhǔn)輸入流中讀取一個字符,程序?qū)⒔邮盏淖址鳛閕nt型值返回給變量。如果輸入流中沒有可用字符,則返回-1。Console.ReadLine()方法ReadLine()方法也是一個靜態(tài)方法,調(diào)用的格式為:Console.ReadLineReadLine()方法用于從控制臺中一次讀取一行字符串,直到遇到Enter鍵才返回讀取的字符串。但此字符串中不包含Enter鍵和換行符('\r\n'。如果沒有接收到任何輸入,或接收了無效的輸入,那么ReadLine()方法將返回null?;镜臄?shù)據(jù)輸出基本數(shù)據(jù)類型的簡單輸出形式為:Console.Write("格式串”,參數(shù)表);或Console.WriteLine("格式串”,參數(shù)表);A格式化輸出標(biāo)準(zhǔn)格式化輸出其使用形式為:Console.WriteLine(“格式”,對象1,…);其中,格式含靜態(tài)文本和標(biāo)志符兩部分,標(biāo)志符表示由參數(shù)表所替換的項目以及它的格式化。通用的格式為:{N[,M][:格式串]}自定義格式化輸出一般形式為:onsole.WriteLine“{項目數(shù)},{0:自定義格式說明符}”,參數(shù)表);日期和時間的格式化輸出獲取日期和時間: 可以通過DateTime類獲取完整的日期和時間。格式化日期和時間:日期和時間的格式化說明符如表4-5所示。字符串的處理方法String類的字符串方法可以直接輸出字符串,也可以使用“+”操作符來連接字符串進(jìn)行輸出??梢允褂盟饕?,從一個字符串的某一特定位置提取一個字符。(3)可以調(diào)用string類的所有屬性和方法,調(diào)用格式為:String?方法名()。Parse()方法Parse()方法可以將字符串轉(zhuǎn)換為數(shù)值類型數(shù)據(jù),而且被轉(zhuǎn)換的字符串可以包含格式化數(shù)據(jù),也可以是由數(shù)字字符組成的字符串。調(diào)用Parse()方法的常用格式為:publicstatic數(shù)據(jù)類型.Parse(strings);ToString()方法ToString()用于將某個數(shù)據(jù)類型轉(zhuǎn)換為字符串類型。調(diào)用格式為:對象.ToString();第五章類面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο?對象+類+繼承+通信(1)抽象(2)封裝(3)繼承(4)多態(tài)性面向過程:過程函數(shù)事必躬親面向?qū)ο螅焊鱾€類各司其職一類與對象對象(object)對象指的是一個實體的實例,在這個實體中包括了特定的屬性數(shù)據(jù)和對這些數(shù)據(jù)進(jìn)行操作的函數(shù)。封裝性、繼承性、多態(tài)性類(class)類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合。在一個類中,每個對象都是類的實例,可以使用類中提供的方法。創(chuàng)建類的對象的操作,被稱為類的實例化類的定義。類聲明語句聲明一個新類,其語法格式為:[訪問修飾符]class類名[:基類名和任何實現(xiàn)接口的列表]{[訪問修飾符]數(shù)據(jù)成員[訪問修飾符]方法成員}訪問修飾符類訪問修飾符:public:訪問不受限制。Internal:訪問僅限于當(dāng)前程序集。類成員訪問修飾符:public:訪問不受限制。protected:訪問僅限于包含類或從包含類派生的類型。internal:訪問僅限于當(dāng)前程序集。protectedinternal:訪問僅限于當(dāng)前程序集或從包含類派生的類型。private:訪問僅限于包含類型。類的成員構(gòu)成數(shù)據(jù)成員常量,字段函數(shù)(方法)成員構(gòu)造函數(shù)和析構(gòu)函數(shù),方法,屬性,事件,索引器(下標(biāo)指示器),操作符嵌套的類型構(gòu)造函數(shù)通常用于初始化對象在創(chuàng)建對象時被自動調(diào)用,不能像其他方法那樣顯式調(diào)用構(gòu)造函數(shù)名與類名相同,沒有返回類型和值,可以重載通常用public修飾,但特殊情況下也可用protected、private等修飾若沒有定義構(gòu)造函數(shù),C#會自動生成一個默認(rèn)構(gòu)造函數(shù)析構(gòu)函數(shù)析構(gòu)函數(shù)用于析構(gòu)類的實例。不能在結(jié)構(gòu)中定義析構(gòu)函數(shù)。只能對類使用析構(gòu)函數(shù)一個類只能有一個析構(gòu)函數(shù)。無法繼承或重載析構(gòu)函數(shù)。無法調(diào)用析構(gòu)函數(shù)。它們是被自動調(diào)用的。析構(gòu)函數(shù)既沒有修飾符,也沒有參數(shù)。注意:程序員無法控制何時調(diào)用析構(gòu)函數(shù),因為這是由垃圾回收器決定的??蓪崿F(xiàn)Disposable實現(xiàn)顯式資源釋放Thisthis關(guān)鍵字引用類的當(dāng)前實例。限定被相似的名稱隱藏的成員publicEmployee(stringname,stringalias){=name;this.alias=alias;}將對象作為參數(shù)傳遞到其他方法CalcTax(this);Keywords_this示例?字段(field)字段是包含在類或結(jié)構(gòu)中的對象或值。字段使類和結(jié)構(gòu)可以封裝數(shù)據(jù)。字段通常應(yīng)為private。夕卜部類應(yīng)當(dāng)通過方法、屬性或索引器來間接訪問字段。聲明字段時可以使用賦值運算符為字段指定一個初始值。如果構(gòu)造函數(shù)為字段分配了值,則它將改寫字段聲明期間給定的任何值。字段初始值設(shè)定項不能引用其他實例字段。publicclassCalendarDate{privateintmonth;privateintday;privateintyear;}屬性它們提供靈活的機(jī)制來讀取、編寫或計算私有字段的值??梢韵袷褂霉矓?shù)據(jù)成員一樣使用屬性,但實際上它們是稱為“訪問器”的特殊方法。屬性使得數(shù)據(jù)在可被輕松訪問的同時,仍能提供方法的安全性和靈活性。屬性使類能夠以一種公開的方法獲取和設(shè)置值,同時隱藏實現(xiàn)或驗證代碼。get屬性訪問器用于返回屬性值,而set訪問器用于分配新值。這些訪問器可以有不同的訪問級別value關(guān)鍵字用于定義由set索引器分配的值。不實現(xiàn)set方法的屬性是只讀的。publicclassCircleclassTimePeriod{{privatedoubleradius;privatedoubleseconds;privatedoublex;privatedoubley;publicdoubleHours{publicdoubleRadiusget{returnseconds/3600;}{set{seconds=value*3600;}get {returnradius; }}set {}訐(value<0)classProgramthrownewException("Radiusmustbe>=0.");{radius=value;staticvoidMain()}{}TimePeriodt=newTimePeriod();//AssigningtheHourspropertycausesthe'set'accessortobecalled.t.Hours=24;publicdoubleArea//EvaluatingtheHourspropertycausesthe'get'get {returnMath.PI*radius*accessortobecalled.radius;}System.Console.WriteLine("Timeinhours:"+}t.Hours);}}練習(xí)定義一個Rect類,表示一個矩形將字段定義成left,top,right,bottom或者left,top,width,height定義至少兩個構(gòu)造函數(shù)定義Left、Top、Right、Bottom、Width、Height、Perimeter、Area等屬性,get/set根據(jù)需要確定方法“方法”是包含一系列語句的代碼塊。在C#中,每個執(zhí)行指令都是在方法的上下文中完成的。方法在類或結(jié)構(gòu)中聲明,聲明時,聲明時需要指定訪問級別、返回值、方法名稱以及任何方法參數(shù)。方法參數(shù)放在括號中,并用逗號隔開??绽ㄌ柋硎痉椒ú恍枰獏?shù)。調(diào)用對象的方法類似于訪問字段。在對象名稱之后,依次添加句點、方法名稱和括號。參數(shù)在括號內(nèi)列出,并用逗號隔開。定義:classMotorcycle{publicvoidStartEngine(){}publicvoidAddGas(intgallons){}publicintDrive(intmiles,intspeed){return0;}}調(diào)用:Motorcyclemoto=newMotorcycle();moto.StartEngine();moto.AddGas(15);moto.Drive(5,20);?索引器索引器允許類或結(jié)構(gòu)的實例按照與數(shù)組相同的方式進(jìn)行索引。索引器類似于屬性,不同之處在于它們的訪問器采用參數(shù)。get訪問器返回值。set訪問器分配值。this關(guān)鍵字用于定義索引器。value關(guān)鍵字用于定義由set索引器分配的值。索引器不必根據(jù)整數(shù)值進(jìn)行索引,由您決定如何定義特定的查找機(jī)制。索引器可被重載。索引器可以有多個形參,例如當(dāng)訪問二維數(shù)組時。publicintthis[intparam]{get{returnarray[param];}set{array[param]=value;}}使用索引器的泛型類classSampleCollection<T>{ privateT[]arr=newT[100];publicTthis[inti]{get { returnarr[i]; }set { arr[i]=value; }}}//ThisclassshowshowclientcodeusestheindexerclassProgram{staticvoidMain(string[]args){SampleCollection<string>stringCollection=newSampleCollection<string>();stringCollection[0]="Hello,World";System.Console.WriteLine(stringCollection[0]);}}繼承繼承是通過使用派生來實現(xiàn)的,而派生意味著類是使用基類聲明的,它的數(shù)據(jù)和行為從基類繼承。通過在派生的類名后面追加冒號和基類名稱,可以指定基類。與C++不同,C#只支持單繼承:類只能從一個基類繼承實現(xiàn)。即派生類將獲取基類的所有非私有數(shù)據(jù)和行為以及新類為自己定義的所有其他數(shù)據(jù)或行為。因此,新類具有兩個有效類型:新類的類型和它繼承的類的類型。classShape{}classCircle:Shape{}virtual、new、overrideC#允許派生類包含與基類方法名稱相同的方法?;惙椒ū仨毝x為virtual。virtual關(guān)鍵字用于修飾方法、屬性、索引器或事件聲明,并且允許在派生類中重寫這些對象。如果派生類中的方法前面帶有new關(guān)鍵字,則該方法被定義為獨立于基類中的方法。如果派生類中的方法前面帶有override關(guān)鍵字,則派生類的對象將調(diào)用該方法,而不調(diào)用基類方法??梢詮呐缮愔惺褂胋ase關(guān)鍵字調(diào)用基類方法。override、virtual和new關(guān)鍵字還可以用于屬性、索引器和事件中。?abstractabstract修飾符可以和類、方法、屬性、索引器及事件一起使用。抽象類在類聲明中使用abstract修飾符以指示某個類只能是其他類的基類。標(biāo)記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現(xiàn)。抽象類不能實例化。從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實實現(xiàn)。在方法或?qū)傩月暶髦惺褂胊bstract修飾符以指示方法或?qū)傩圆话瑢崿F(xiàn)。抽象方法是隱式的虛方法。只允許在抽象類中使用抽象方法聲明。號({})。abstractclassShapesClass{abstractpublicintArea();}classSquare:ShapesClass{intx,y;//BecauseShapesClass.Areaisabstract,failingtooverride//theAreamethodwouldresultinacompilationerror.publicoverrideintArea(){returnx*y;}}basebase關(guān)鍵字用于從派生類中訪問基類的成員,調(diào)用基類上已被其他方法重寫的方法。指定創(chuàng)建派生類實例時應(yīng)調(diào)用的基類構(gòu)造函數(shù)?;愒L問只能在構(gòu)造函數(shù)、實例方法或?qū)嵗龑傩栽L問器中進(jìn)行。從靜態(tài)方法中使用base關(guān)鍵字是錯誤的。?委托(delegate)委托是一種引用方法的類型。一旦為委托分配了方法,委托將與該方法具有完全相同的行為。委托方法的使用可以像其他任何方法一樣,具有參數(shù)和返回值。如下面的示例所示:publicdelegateintPerformCalculation(intx,inty);與C中的函數(shù)指針不同,委托是面向?qū)ο蟮?、類型安全的。與委托的簽名(由返回類型和參數(shù)組成)匹配的任何方法都可以分配給該委托。這樣就可以通過編程方式來更改方法調(diào)用,還可以向現(xiàn)有類中插入新代碼。只要知道委托的簽名,便可以分配自己的委托方法。將方法作為參數(shù)進(jìn)行引用的能力使委托成為定義回調(diào)方法的理想選擇。例如,可以向排序算法傳遞對比較兩個對象的方法的引用。分離比較代碼使得可以采用更通用的方式編寫算法。委托類型派生自.NETFramework中的Delegate類。委托類型是密封的,不能從Delegate中派生委托類型,也不可能從中派生自定義類。由于實例化委托是一個對象,所以可以將其作為參數(shù)進(jìn)行傳遞,也可以將其賦值給屬性。事件(event)事件是類在發(fā)生其關(guān)注的事情時用來提供通知的一種方式。例如,封裝用戶界面控件的類可以定義一個在用戶單擊該控件時發(fā)生的事件??丶惒魂P(guān)心單擊按鈕時發(fā)生了什么,但它需要告知派生類單擊事件已發(fā)生。然后,派生類可選擇如何響應(yīng)。向類中添加事件需要使用event關(guān)鍵字,并提供委托類型和事件名稱。事件使用委托來為觸發(fā)時將調(diào)用的方法提供類型安全的封裝。//DeclarethehandlerdelegatefortheeventpublicdelegatevoidButtonEventHandler();classTestButton{//OnClickisanevent,implementedbyadelegate//ButtonEventHandler.public event ButtonEventHandlerOnClick;//Amethodthattriggerstheevent:publicvoidClick(){OnClick();}}publicvoidTestHandler(){MessageBox.Show("Test”);}publicvoidTestHandler2(){MessageBox.Show("Test”);}publicvoidCallClick(){//CreateaninstanceoftheTestButtonclass.TestButtonmb=newTestButton();//SpecifythemethodthatwillbetriggeredbytheOnClickevent.mb.OnClick+=newButtonEventHandler(TestHandler);mb.OnClick+=newButtonEventHandler(TestHandler2);//Triggertheeventmb.Click();mb.OnClick-=newButtonEventHandler(TestHandler);mb.Click();}?數(shù)組數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它包含若干相同類型的變量。數(shù)組可以是一維、多維或交錯的。數(shù)值數(shù)組元素的默認(rèn)值設(shè)置為零,而引用元素的默認(rèn)值設(shè)置為null。交錯數(shù)組是數(shù)組的數(shù)組,因此,它的元素是引用類型,初始化為null。數(shù)組的索引從零開始:具有n個元素的數(shù)組的索引是從0到n-1。數(shù)組元素可以是任何類型,包括數(shù)組類型。數(shù)組類型是從抽象基類型Array派生的引用類型。由于此類型實現(xiàn)了lEnumerable和lEnumerable,因此可以對C#中的所有數(shù)組使用foreach迭代。在C#中,數(shù)組實際上是對象,而不只是像C和C++中那樣的可尋址連續(xù)內(nèi)存區(qū)域。Array是所有數(shù)組類型的抽象基類型。可以使用Array具有的屬性以及其他類成員??墒褂肔ength屬性來獲取數(shù)組的長度。System.Array類提供了許多其他有用的方法和屬性,用于排序、搜索和復(fù)制數(shù)組。交錯數(shù)組是元素為數(shù)組的數(shù)組。交錯數(shù)組元素的維度和大小可以不同。交錯數(shù)組有時稱為“數(shù)組的數(shù)組”classTestArraysClassclassArrayTest
{staticvoidMain(){//Declareasingle-dimensionalarray{staticvoidMain(){//Declarethearrayoftwoelements:int[]arrayl=newint[5];int[][]arr=newint[2][];//Declareandsetarrayelementvaluesint[]array2=newint[]{1,3,5,7,9};//Initializetheelements://Alternativesyntaxarr[0]=newint[5]{1,3,5,7,9};int[]array3={1,2,3,4,5,6};arr[1]=newint[4]{2,4,6,8};//Declareatwodimensionalarrayint[,]multiDimensionalArray1=newint[2,3];//Displaythearrayelements://Declareandsetarrayelementvaluesfor(inti=0;i<arr.Length;i++)int[,]multiDimensionalArray2={{1,2,3},{4,5,6}};{//DeclareajaggedarraySystem.Console.Write("Element({0}):",i);int[][]jaggedArray=newint[6][];//Setthevaluesofthefirstarrayinthejaggedarrayfor(intj=0;j<arr[i].Length;j++)structurejaggedArray[O]=newint[4]{1,2,3,4};}}{System.Console.Write("{0}{1}",arr[i][j],j==(arr[i].Length-1)?"":"");}System.Console.WriteLine();}}}練習(xí)用冒泡法實現(xiàn)對一維int數(shù)組的排序函數(shù)格式為staticvoidSort(int[]a);ArrayListArrayList可實現(xiàn)容量按需要動態(tài)增加的一維數(shù)組可以增加、刪除、插入元素。usingSystem;publicstaticvoidPrintValues(lEnumerablemyList){usingSystem.Collections;foreach(ObjectobjinmyList)publicclassSamplesArrayList{Console.Write(" {0}",obj);publicstaticvoidMain(){Console.WriteLine();//CreatesandinitializesanewArrayList.}ArrayListmyAL=newArrayList();}
myAL.Add("Hello");myAL.Add("World");myAL.Add("!");//DisplaysthepropertiesandvaluesoftheArrayList.Console.WriteLine("myAL");Console.WriteLine(" Count: {0}",myAL.Count);Console.WriteLine(" Capacity:{0}",myAL.Capacity);Console.Write(" Values:");PrintValues(myAL);}第六章控件和對話框設(shè)計Windows程序設(shè)計:兩大類用戶界面:窗口,對話框通常一個Windows程序至少有一個窗體(Form),窗體是控件的容器,命名空間:System.Windows.Forms一.一般步驟建立新項目-9向項目添加窗體-9向窗體添加控件-9為窗體和控件設(shè)置屬性-9為窗體和控件編寫事件處理程序-9在程序代碼中調(diào)用窗體和控件的方法二.對話框Dialog模式對話框(ModalDialog)非模式對話框(ModelessDialog)屬性:Name,Text,Width、Height,F(xiàn)oreColor、BackColorA事件:Load,FormClosing,//CallthismethodfromtheconstructorofyourformprivatevoidOtherlnitialize(){this.Closing+=newCancelEventHandler(this.Form1_Closing);//Exchangecommentedlineandnotethedifference.this.isDataSaved=true;//this.isDataSaved=false;}privatevoidForm1_Closing(Objectsender,CancelEventArgse){訐(!isDataSaved){e.Cancel=true;MessageBox.Show("Youmustsavefirst.");} else{e.Cancel=false;MessageBox.Show("Goodbye.");}}>方法Close,Hide,Show,ShowDialog常用控件ALabel控件:常用屬性:Text,BackColor,F(xiàn)oreColor,F(xiàn)ont,AButton控件,常用屬性,Text,Enabled常用事件,ClickATextBox控件:常用屬性:Text,ReadOnly,PasswordChar,Multiline,Enabled常用事件:TextChangedSelectedItemListBox控件:常用屬性:Items集合,MultiColumn,SelectionMode,Selectedlndex,SelectedItem常用事件:DoubleClick,SelectedIndexChanged常用方法:ClearSelected,SetSelected■Items集合:常用屬性:Count常用方法:Add,RemoveAt,Insert,ClearComboBox:可看成TextBox與單選ListBox的組合具有TextBox和單選ListBox所具有的許多屬性、方法、事件常用屬性:DropDownStyle,Simple,DropDown,DropDownList,RadioButton控件:常用屬性Checked,Text常用事件Click,CheckedChangedCheckBox控件:常用屬性Checked,Text。常用事件,Click,CheckedChangedPictureBox控件:常用屬性Image,SizeMode裝載圖像pictureBox1.Image=newBitmap(“test.png");GroupBox控件:常用容器之一??稍O(shè)置標(biāo)題,Radio分組常使用GroupBox常用屬性,TextPanel:常用容器之一,可以有滾動條常用屬性:AutoScroll,BorderStyleTimer控件:常用屬性:Enabled,Interval常用事件,Tick其他常用控件:TreeView,TabControl,ProgressBar,ToolTip,ImageList對話框返回值DialogResult枚舉,DialogResult屬性,其他返回值DialogResult枚舉Abort對話框返回值是Abort(通常從標(biāo)為“中止”的按鈕發(fā)送)。Cancel對話框返回值是Cancel(通常從標(biāo)為“取消”的按鈕發(fā)送)Ignore對話框返回值是Ignore(通常從標(biāo)為“忽略”的按鈕發(fā)送)No對話框返回值是No(通常從標(biāo)為“否”的按鈕發(fā)送)。None從對話框返回了Nothing。這表明有模式對話框繼續(xù)運行。OK對話框返回值是0K(通常從標(biāo)為“確定”的按鈕發(fā)送)。Retry對話框返回值是Retry(通常從標(biāo)為“重試”的按鈕發(fā)送)Yes對話框返回值是Yes(通常從標(biāo)為“是”的按鈕發(fā)送)。Button的DialogResult屬性獲取或設(shè)置一個值,該值在單擊按鈕時返回到父窗體。如果Button的DialogResult不是設(shè)置為None,并且父窗體是通過ShowDialog方法顯示的,則不必掛鉤任何事件,單擊按鈕也可關(guān)閉父窗體。然后,該窗體的DialogResult屬性將設(shè)置為該按鈕被單擊時的DialogResult。>Form的DialogResult屬性窗體的DialogResult是當(dāng)窗體顯示為模式對話框時從該窗體返回的值。如果窗體顯示為對話框,用DialogResult枚舉中的值設(shè)置此屬性將設(shè)置該窗體的對話框結(jié)果值、隱藏模式對話框并將控制返回給調(diào)用窗體。此屬性通常由窗體上Button控件的DialogResult屬性設(shè)置。當(dāng)用戶單擊Button控件時,分配給Button的DialogResult屬性的值將分配給該窗體的DialogResult屬性。當(dāng)窗體顯示為模式對話框時,單擊“關(guān)閉”按鈕(窗體右上角帶X的按鈕)會隱藏窗體并將DialogResult屬性設(shè)置為DialogResult.Cancel。常用對話框MessageBox通用對話框:ColorDialog,FontDialog,OpenFileDialog,SaveFileDialog,MessageBox> 消息對話框MessageBox常用方法:Show具有多種調(diào)用形式:Show(String)Show(String,String,MessageBoxButtons,MessageBoxIcon)■返回類型:DialogResultMessageBoxButtons枚舉AbortRetrylgnore:“中止”、“重試”、“忽略”0K:“確定”O(jiān)KCancel:“確定”“取消”RetryCancel:“重試”“取消”YesNo:“是”、“否”YesNoCancel:“是”、“否”“取消”MessageBoxIcon枚舉Asterisk符號由一個圓圈及其中的小寫字母i組成的。Error符號由一個紅色背景的圓圈及其中的白色X組成的。Exclamation符號由一個黃色背景的三角形及其中的一個感嘆號組成的Hand符號是由一個紅色背景的圓圈及其中的白色X組成的。Information符號是由一個圓圈及其中的小寫字母i組成的。None消息框未包含符號。Question符號是由一個圓圈和其中的一個問號組成的。Stop符號是由一個紅色背景的圓圈及其中的白色X組成的。Warning符號是由一個黃色背景的三角形及其中的一個感嘆號組成的。>通用對話框ColorDialog,FontDialog,OpenFileDialog,SaveFileDialog
■ 使用通用對話框1)初始化對話框?qū)傩?)調(diào)用ShowDialog顯示對話框3)如果ShowDialog返回DialogResult.OK,則獲取返回的屬性■ ColorDialog:常用屬性Color,AllowFullOpen常用方法,ShowDialogprivatevoidbutton1_Click(objectsender,System.EventArgse){ColorDialogMyDialog=newColorDialog();//Keepstheuserfromselectingacustomcolor.MyDialog.AllowFullOpen=false;//Allowstheusertogethelp.(Thedefaultisfalse.)MyDialog.ShowHelp=true;//Setstheinitialcolorselecttothecurrenttextcolor.MyDialog.Color=textBoxl.ForeColor;//Updatethetextboxcolor訐theuserclicksOK訐(MyDialog.ShowDialog()==DialogResult.OK)textBoxl.ForeColor=MyDialog.Color;}■FontDialog:常用屬性:Font,Color常用方法ShowDialogprivatevoidbutton1_Click(objectsender,System.EventArgse){FontDialogfontDialogl=newFontDialog();fontDialogl.ShowColor=true;fontDialogl.Font=textBoxl.Font;fontDialogl.Color=textBoxl.ForeColor;if(fontDialog1.ShowDialog()!=DialogResult.Cancel){textBoxl.Font=fontDialogl.Font;textBoxl.ForeColor=fontDialogl.Color;}}■ OpenFileDialog:常用屬性:FileName,lnitialDirectory,F(xiàn)ilter,■SaveFileDialog;常用屬性:FileName,CreatePrompFilterindexOverwritePrompt,DefaultExt,InitialDirectory,F(xiàn)ilter常用方法:ShowDialog,OpenFile常用方法:ShowDialog,OpenFileprivatevoidbutton1_Click(objectsender,System.EventArgse)privatevoidButton1_Click(System.Objectsender,System.EventArgse){{ SaveFileDialogSaveFileDialogl=newSaveFileDialog();OpenFileDialogopenFileDialogl=newOpenFileDialog();SaveFileDialogl.CreatePrompt=true;SaveFileDialogl.OverwritePrompt=true;openFileDialogl.lnitialDirectory="c:\\";SaveFileDialogl.FileName="myText";openFileDialogl.Filter="txtfiles(*.txt)|*.txt|AIIfiles(*.*)|*.*";SaveFileDialogl.DefaultExt="txt";openFileDialogl.Filterindex=2;SaveFileDialogl.Filter="Textfiles(*.txt)|*.txt";openFileDialogl.RestoreDirectory=true;SaveFileDialogl.InitialDirectory="c:\\";訐(openFileDialog1.ShowDialog()==DialogResult.OK)DialogResultresult=SaveFileDialog1.ShowDialog();{}訐(result==DialogResult.OK)}{}}第七章Windows程序界面設(shè)計MenuStripMenuStrip控件表示窗體菜單結(jié)構(gòu)的容器。您可以將ToolStripMenuItem對象添加到表示菜單結(jié)構(gòu)中各菜單命令的MenuStrip中。每個ToolStripMenuItem可以成為應(yīng)用程序的命令或其他子菜單項的父菜單。MenuStrip是ToolStripMenuItem、ToolStripComboBox、ToolStripSeparator和ToolStripTextBox對象的容器。ToolStripMenultem:常用屬性Text,Checked,Image,Enabled常用事件ClickToolStrip:可使用ToolStrip及其相關(guān)的類來創(chuàng)建工具欄,這些工具欄具有WindowsXP、Office、InternetExplorer或自定義的外觀和行為可在ToolStrip放置Button、Label、DropDownButton、TextBox、ProgressBar等ToolStrip是ToolStripButton、ToolStripComboBox、ToolStripSplitButton、ToolStripLabel、ToolStripSeparator、ToolStripDropDownButton、ToolStripProgressBar和ToolStripTextBox對象的容器。放置的子控件與普通的Button、Label等控件操作類似ToolStripButton:常用屬性:Image,Check,Enabled,ToolTipText常用事件Click二StatusStrip通常StatusStrip控件由ToolStripStatusLabel對象組成,其中每個對象都顯示文本和/或圖標(biāo)。StatusStrip還可包含ToolStripDropDownButton、ToolStripSplitButton和ToolStripProgressBar控件??稍赥oolStrip放置Label、DropDownButton、TextBox、ProgressBar等放置的子控件與普通的Button、Label等控件操作類似ContextMenuStrip快捷菜單(也稱為上下文菜單)在用戶單擊鼠標(biāo)右鍵時會出現(xiàn)在鼠標(biāo)位置。當(dāng)用戶在控件或窗體本身上單擊鼠標(biāo)右鍵時,通常會顯示快捷菜單。許多可視控件(以及Form本身)都有一個Control.ContextMenuStrip屬性,該屬性將ContextMenuStrip類綁定到顯示快捷菜單的控件。多個控件可使用一個ContextMenuStrip。四.窗口布局Panel的使用,SplitContainer的使用,控件Dock屬性的使用五.MDI多文檔界面MDI容器:IsMdiContainer屬性設(shè)為trueMDI子窗口將MdiParent設(shè)為MDI容器,使用Show顯示例在容器窗口的某打開子窗口的函數(shù)中:{Form2f=newForm2();f.MdiParent=this;f.Show();}第八章文件和流操作一.文件和流I/OSystem.IO命名空間包含允許在數(shù)據(jù)流和文件上進(jìn)行同步和異步讀取及寫入的類型。A 文件和流的差異文件是一些具有永久存儲及特定順序的字節(jié)組成的一個有序的、具有名稱的集合。因此,關(guān)于文件,人們常會想到目錄路徑、磁盤存儲、文件和目錄名等方面。流提供一種向后備存儲寫入字節(jié)和從后備存儲讀取字節(jié)的方式,后備存儲可以為多種存儲媒介之一。正如除磁盤外存在多種后備存儲一樣,除文件流之外也存在多種流。例如,還存在網(wǎng)絡(luò)流、內(nèi)存流和磁帶流等。二用于文件I/O的類Directory提供通過目錄和子目錄進(jìn)行創(chuàng)建、移動和枚舉的靜態(tài)方法。Directoryinfo類提供實例方法。Directoryinfo提供通過目錄和子目錄進(jìn)行創(chuàng)建、移動和枚舉的實例方法。Directory類提供靜態(tài)方法。Driveinfo提供訪問有關(guān)驅(qū)動器的信息的實例方法。File提供用于創(chuàng)建、復(fù)制、刪除、移動和打開文件的靜態(tài)方法,并協(xié)助創(chuàng)建Filestream。Fileinfo類提供實例方法。Fileinfo提供用于創(chuàng)建、復(fù)制、刪除、移動和打開文件的實例方法,并協(xié)助創(chuàng)建FileStream。File類提供靜態(tài)方法。FileStream支持通過其Seek方法隨機(jī)訪問文件。默認(rèn)情況下,F(xiàn)ileStream以同步方式打開文件,但它也支持異步操作。File包含靜態(tài)方法,而Fileinfo包含實例方法。FileSysteminfo是Fileinfo和Directoryinfo的抽象基類。Path提供以跨平臺的方式處理目錄字符串的方法和屬性。三.用于從流讀取和寫入流的類BinaryReader和BinaryWriter從Streams讀取或向Streams寫入編碼的字符串和基元數(shù)據(jù)類型。StreamReader通過使用Encoding進(jìn)行字符和字節(jié)的轉(zhuǎn)換,從Streams中讀取字符。StreamReader具有一個構(gòu)造函數(shù),該構(gòu)造函數(shù)根據(jù)是否存在專用于 Encoding的preamble(例如一個字節(jié)順序標(biāo)記)來嘗試確定給定Stream的正確Encoding是什么。StreamWriter通過使用Encoding將字符轉(zhuǎn)換為字節(jié),向Streams寫入字符。TextReader是StreamReader的抽象基類。抽象Stream類的實現(xiàn)用于字節(jié)輸入和輸出,而TextReader的實現(xiàn)用于Unicode字符輸出。TextWriter是StreamWriter的抽象基類。抽象Stream類的實現(xiàn)用于字節(jié)輸入和輸出,而TextWriter的實現(xiàn)用于Unicode字符輸出。Directory&DriveinfoDirectoryDriveinfousingSystem.10;usingSystem.IO;classTestclassTest{ publicstaticvoidMain(){ publicstaticvoidMain(){{stringpath=@"c:\MyDir";Driveinfo[]allDrives=Driveinfo.GetDrives();stringtarget=@"c:\TestDir";foreach(DriveinfodinallDrives)try{{Console.WriteLine("Drive{0}",d.Name);
訐(!Directory.Exists(path)){Directory.CreateDirectory(path);}訐(Directory.Exists(target)){Directory.Delete(target,true);}Directory.Move(path,target);File.CreateText(target+@"\myfile.txt");Console.WriteLine("Thenumberoffilesin{0}is{1}",target,Directory.GetFiles(target).Length);}catch(Exceptione){Console.WriteLine("The process failed: {0}",e.ToString());}finally{}}}Console.WriteLine("Filetype:{0}",d.DriveType);訐(d.isReady==true){Console.WriteLine(" Volumelabel:{0}",d.VolumeLabel);Console.WriteLine(" Filesystem:{0}",d.DriveFormat);Console.WriteLine("Availablespacetocurrentuser:{0,15}bytes",d.AvailableFreeSpace);Console.WriteLine("Totalavailablespace:{0,15}bytes",d.TotalFreeSpace);Console.WriteLine("Totalsizeofdrive:{0,15}bytes",d.TotalSize);}}}}五.FileInfo>構(gòu)造函數(shù)publicFileinfo(stringfileName)屬性CreationTime 獲取或設(shè)置當(dāng)前FileSysteminfo對象的創(chuàng)建時間。(從FileSystemInfo繼承。)Directory獲取父目錄的實例。DirectoryName獲取表示目錄的完整路徑的字符串。Exists獲取指示文件是否存在的值。Extension獲取表示文件擴(kuò)展名部分的字符串。FullName獲取目錄或文件的完整目錄。isReadOnly獲取或設(shè)置確定當(dāng)前文件是否為只讀的值。Length獲取當(dāng)前文件的大小。Name獲取文件名。操作CopyTo,Delete,MoveToFileStream使用FileStream類對文件系統(tǒng)上的文件進(jìn)行讀取、寫入、打開和關(guān)閉操作,并對其他與文件相關(guān)的操作系統(tǒng)句柄進(jìn)行操作,如管道、標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。FileStream對輸入輸出進(jìn)行緩沖,從而提高性能。FileStream對象支持使用Seek方法對文件進(jìn)行隨機(jī)訪問。Seek允許將讀取/寫入位置移動到文件中的任意位置。這是通過字節(jié)偏移參考點參數(shù)完成的。字節(jié)偏移量是相對于查找參考點而言的,該參考點可以是基礎(chǔ)文件的開始、當(dāng)前位置或結(jié)尾,分別由SeekOrigin類的三個屬性表示。支持同步和異步操作構(gòu)造函數(shù)publicFileStream(stringpath,FileModemode)publicFileStream(stringpath,FileModemode,FileAccessaccess)常用屬性Length,Position,Name常用方法:ReadByte:讀一個字節(jié),Read:讀多個字節(jié),Write:寫一個字節(jié),WriteByte:寫多個字節(jié),Seek:定位SetLength:設(shè)置長度,Close:關(guān)閉流FileMode:Append:打開現(xiàn)有文件并查找到文件尾,或創(chuàng)建新文件。Create:指定操作系統(tǒng)應(yīng)創(chuàng)建新文件。如果文件已存在,它將被改寫。System.lO.FileMode.Create等效于這樣的請求:如果文件不存在,則使用CreateNew;否則使用Truncate。CreateNew:指定操作系統(tǒng)應(yīng)創(chuàng)建新文件。如果文件已存在,則將引發(fā)IOException。Open:指定操作系統(tǒng)應(yīng)打開現(xiàn)有文件。打開文件的能力取決于 FileAccess所指定的值。如果該文件不存在,則引發(fā)System.IO.FileNotFoundException。OpenOrCreate:指定操作系統(tǒng)應(yīng)打開文件(如果文件存在);否則,應(yīng)創(chuàng)建新文件。Truncate:指定操作系統(tǒng)應(yīng)打開現(xiàn)有文件。文件一旦打開,就將被截斷為零字節(jié)大小。FileAccessRead對文件的讀訪問。可從文件中讀取數(shù)據(jù)。同Write組合即構(gòu)成讀寫訪問權(quán)。ReadWrite對文件的讀訪問和寫訪問。可從文件讀取數(shù)據(jù)和將數(shù)據(jù)寫入文件。Write文件的寫訪問??蓪?shù)據(jù)寫入文件。同Read組合即構(gòu)成讀/寫訪問權(quán)。StreamWriterStreamWriter默認(rèn)使用UTF8Encoding的實例,除非指定了其他編碼。為了支持中文,請使用Encoding.Default。構(gòu)造函數(shù)publicStreamWriter(Streamstream)publicStreamWriter(Streamstream,Encodingencoding)publicStreamWriter(stringpath)publicStreamWriter(stringpath,Encodingencoding)關(guān)閉Close寫操作Write,WriteLine,F(xiàn)lushStreamReaderStreamReader旨在以一種特定的編碼輸入字符,使用StreamReader讀取標(biāo)準(zhǔn)文本文件的各行信息。除非另外指定,StreamReader的默認(rèn)編碼為UTF-8。為了支持中文,請使用Encoding.Default。構(gòu)造函數(shù)publicStreamReader(Streamstream)publicStreamReader(Streamstream,Encodingencoding)
publicStreamReader(stringpath)publicStreamReader(stringpath,Encodingencoding)關(guān)閉Close屬性EndOfStreamusingSystem;classTestusingSystem.10;{ publicstaticvoidMain()classTest{{try{ {publicstaticvoidMain()using (StreamReader sr ={StreamReader("TestFile.txt"))using(StreamWritersw=newStreamWriter("TestFile.txt")){{Stringline;sw.Write("Thisisthe");while((line=sr.ReadLine())!=null)sw.WriteLine("headerforthefile.");{Console.WriteLine(line); }sw.WriteLine(" ");}}catch(Exceptione)sw.Write("Thedateis:");sw.WriteLine(DateTime.Now);{Console.WriteLine("Thefilecouldnotberead:");}Console.WriteLine(e.Message);}}}}}讀操作,Read,ReadLine,ReadBlock,ReadToEnd,Peek向文件中寫文本&從文件讀取文本newBinaryWriter以二進(jìn)制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。構(gòu)造函數(shù)publicBinaryWriter(Streamoutput)publicBinaryWriter(Streamoutput,Encodingencoding)關(guān)閉Close寫函數(shù)Write(Boolean)將單字節(jié)Boolean值寫入當(dāng)前流,其中0表示false,1表示true。Write(Byte)將一個無符號字節(jié)寫入當(dāng)前流,并將流的位置提升1個字節(jié)。Write(Byte[])將字節(jié)數(shù)組寫入基礎(chǔ)流。Seek:設(shè)置當(dāng)前流中的位置。Flush清理當(dāng)前編寫器的所有緩沖區(qū),使所有緩沖數(shù)據(jù)寫入基礎(chǔ)設(shè)備。
十.BinaryReader用特定的編碼將基元數(shù)據(jù)類型讀作二進(jìn)制值。構(gòu)造函數(shù)publicBinaryReader(Streaminput)publicBinaryReader(Streaminput,Encodingencoding)關(guān)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乙方商鋪租賃合同范本
- 出讓合同范本官網(wǎng)
- 個人催債合同范本
- 2025年遵義a2貨運從業(yè)資格證考試
- 借款合同和抵押合同范例
- 勞務(wù)合同范本保密條款
- 東營市勞動合同范本
- 低成本創(chuàng)業(yè)合同范本
- 個人室內(nèi)植物租賃合同范本
- 棄土場土方外運施工方案
- 一次性纖維環(huán)縫合器
- 中華民族的形成與發(fā)展
- 兒科抗生素使用
- 綠化工程承包合同 綠化工程承包合同范本(二篇)
- 建筑財務(wù)出納年終總結(jié)PPT模板下載
- GB/T 9574-2001橡膠和塑料軟管及軟管組合件試驗壓力、爆破壓力與設(shè)計工作壓力的比率
- 旋挖樁安全專項施工方案
- 跨文化溝通技巧課件
- 三位數(shù)乘一位數(shù)練習(xí)題(300道)
- 北師大版八年級下冊數(shù)學(xué)全冊教案完整版教學(xué)設(shè)計
- 長白縣巡游出租汽車駕駛員從業(yè)資格-區(qū)域科目考試題庫(含答案)
評論
0/150
提交評論