版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《面向對象程序設計(C#)》
講義劉直良信息工程學院1、學時分配?總學時:72學時,其中理論學時36,實驗學時36。2、成績與考核成績=平時成績+實驗成績+考試成績考核方式:上機考試3、課程講授時順序與教材不同,請同學們注意查找對應章節(jié)。4、學習方法:多做多練,借助于網絡資源,適當做一些系統(tǒng)的大型實例。5、.NETMSDN(MicrosoftDeveloperNetwork),這是微軟的技術開發(fā)手冊,是開發(fā)人員不可缺少的技術資料,其網址為:/zh-cn/1ibrary/default,aspx6、C#高級編程(第6版)/art/200811/98922.htm第1章 ,NET與C#.NET和C#1.1什么是?NET定義根據微軟的定義:.NETisa"/revolutionarynewplatform,builtonopenInternetprotocolsandstandards,withtoolsandservicesthatmeldcomputingandcommunicationsinnewways"".即:.NET=新平臺+標準協(xié)議+統(tǒng)ー開發(fā)工具.NET技術是微軟公司推出的ー個全新概念,“它代表了一個集合、ー個環(huán)境和一個可以作為平臺支持下一代!nternet的可編程結構?!?NET的最終目標就是讓用戶在任何地方、任何時間,以及利用任何設備都能訪問所需的信息、文件和程序。.NET的構成.NET開發(fā)平臺=.NETFrameWork+.NETDevelopmentTools>.NETFramework(框架)是整個開發(fā)平臺的基礎,包括CommonLanguageRun(CLR:公共語言運行庫)和.NETClassLibrary(類庫)。(1)公共語言運行庫是.NET的基礎,用戶可以將公共語言運行庫看作是…個在執(zhí)行時管理代碼的代理,它提供核心服務(如內存管理、線程管理和遠程處理)。(2).NET類庫是ー個綜合性的面向對象的可重用類集合。當用C#編寫的程序要在其它沒有安裝.net的機器上運行時,必須安裝.NET框架,否則不能運行,所以.net編寫的程序的可移植性稍差。2、.NET開發(fā)工具包括VisualStudio.NET集成開發(fā)環(huán)境和.NET編程語言。其中,VisualStudio.NET集成開發(fā)環(huán)境用來開發(fā)和測試應用程序。.NET編程語言包括VisualBasic,VisualC++和新的VisualC#等用來創(chuàng)建運行在公共語言運行庫(CLR)上的應用程序。VBVC-n-JC#|JScrip| 公共語言運行規(guī)范(CommonLanguageSpecification)Asp.NET(B/S)Windows窗體(C/S)I ADO.NET和XML I基類庫(BaseClassLibrary)
公共語言運行庫(CommonLanguageRun)IWindows COM+Services.NET開發(fā)平臺1.2什么是C#C#讀作CSharp,是C和C++語言家族中第一一種面向組件的編程語言,是一種使用簡單、面向對象、類型安全的現(xiàn)代編程語言。作為Microsoft的下一代面向對象的語言,能夠讓開發(fā)人員在.NET平臺上快速地建立大量的應用程序。按照Microsoft給出的定義,C#是ー種源自于C和C++的,簡單的、現(xiàn)代的、面向對象的和類型安全的程序設計語言,它結合了VB的靈活性和C語言的強大的功能,是新一代的編程語言。C#為程序員提供了開發(fā)飛速發(fā)展的Web應用程序所需要的強大而靈活的功能。與C++相比,C#將更容易被人們理解和接受,未來大量.NET平臺的應用將由C#開發(fā),C#將是未來開發(fā)企業(yè)級分布式應用程序的首選。1.2C#程序結構介紹創(chuàng)建第一個C#控制臺(或稱命令行)程序程序代碼如下:〃源文件:welcome,csusingSystem;classWelcome(staticvoidMainOConsole.WriteLine(z,WelcomeyoutoentertheC#world!z,);.2.2代碼及結構分析1、上面的代碼你可以在任意ー種字處理軟件中進行編寫,或在.NET集成開發(fā)環(huán)境(IntegratedDeveloperEnvironment,IDE)中直接編寫,然后以文件名“Welcome,cs”存盤。典型的C#源文件都是以“.cs”作為文件的擴展名的。2、名字空間usingSystem表示導入名字空間,等同于C或C++中的“#include“。“System”就是ー個名字空間,是Microsoft.NET系統(tǒng)提供的類庫,“using”指令允許對屬于該名字空間成員的類型無限制引用。3、類和類的方法在程序第二行,classWelcome聲明了一個類,類的名字叫做“Weicome”。這個程序讓我們所作的事情都依靠它來完成。在ー個C#程序中,至少要包含ー個類。StaticvoidMain()表示類“Welcome”中的ー一個方法,方法總是為我們完成某項工作的。在C#中,程序的執(zhí)行總是從“Main〇”方法開始,ー個程序中不允許出現(xiàn)兩個或者兩個以上的“Main()”方法。Main。函數(shù)在C#里非常特殊,它是編譯器規(guī)定的所有可執(zhí)行程序的入口點,Main。函數(shù)名的第?個字母要大寫,否則將不具有入口點的語義。就像ー個文件夾可以容納多個文件一樣,ー個名字空間可以被視為某些類的ー個容器。因為.NET有很多類,所以名字空間是必要的。微軟已經編寫了數(shù)以千計的基類,同時任何合理的大型應用程序都可以定義更多的類。通過把類放入名字空間可以把相關的類組織起來,并且可以避免命名沖突。4、“{”和“}”與C和C++ー樣,源代碼被包含在ー對大括號之中,每ー個右括號總是和它前面離它最近的ー個左括號相配套。如果左括號和右括號沒有全部的配套,那么這就是?個錯誤的程序。所有語句都以分號”;”結束。5、程序的輸入與輸出程序所完成的輸入輸出功能都是通過“Console”來完成的,“Console”是在名字空間“System”中已經定義好的?個類,你根本不需要管它是怎么完成工作的,只要直接使用它就可以了。上面的程序代碼中,類“Console”為我們展現(xiàn)了一個最基本的方法:WriteLine?用于在輸出設備中輸出,還有一個較常用的方法是ReadLine。Console.ReadLine表示接受輸入設備輸入。6.添加注釋C#中注釋的方式和C、C++沒有什么區(qū)別,每行中雙斜杠“〃’’后面的內容,以及在分割符"/*''和“*/''之間的內容都將被編譯器忽略。其中,‘ソ/''表示進行單行注釋;“/*”和“*/”表示多行注釋。注:在C#中添加注釋與解除注釋時,可利用工具欄上的按鈕。7、標識符C#中的標識符有以下規(guī)則:(1)以字母或下劃線開頭,后面可以是字母、數(shù)字或下劃線。(2)嚴格區(qū)分大小寫(3)關鍵字也可以作為標識符,但要在關鍵字前加上@符號。1.2.3.NET集成開發(fā)環(huán)境的使用技巧1、利用.NET集成開發(fā)環(huán)境的優(yōu)越性ーー智能提示。2、顯示行號:工具/選項一文本編輯器ーC#,選中“行號”3、設置斷點:4、注釋/取消注釋5、排版1.2.4程序的編譯命令行編譯對C祥源程序,默認擴展名為.CS,可使用記事本或.NET環(huán)境編輯得到。在使用命令行編譯時,使用的編譯器是:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe下面以編譯file,cs為例:1、編譯file,cs生成file,exe:escfile,cs2、編譯file,cs生成file,dll:esc/target:libraryfile,cs3、僅編譯file,cs,但不生成可執(zhí)行文件:esc/nooutputfile,cs4,編譯file,cs生成my.exe:esc/out:my.exefile,cs一般經過編譯后得到ーexe文件,但要注意,此時產生的exe文件是ー個由中間語言(IL:IntermediateLanguage)>元數(shù)據(Metadata)和一個額外的被編譯器添加的目標平臺的標準可執(zhí)行文件頭組成的PE(portableexecutable,可移植執(zhí)行體)文件,而不是傳統(tǒng)的二進制可執(zhí)行文件,我們稱之為受管代碼(ManagedCode),這些代碼不專用于任何ー種操作系統(tǒng),在執(zhí)行時,通過即時編譯器JIT(Just-In-Time)編譯成原始的可執(zhí)行代碼。利用菜單編譯并執(zhí)行程序利用“調試”菜單?!?.3控制臺輸入輸出操作控制臺(Console)的輸入輸出操作主要是通過命名空間System中的類Console來實現(xiàn)的。輸入操作主要有Read方法和ReadLine方法,輸出操作主要有Write方法和WriteLine方法。1.3.1Console.WriteLine方法功能:將信息輸出到控制臺,輸出信息后換行。格式:Console.WriteLine(express)說明:在該方法中,可以采用{N[,M]:格式化字符串}}的形式格式化輸出字符串,其中各參數(shù)含義如下:{}:用來在輸出字符串中插入表達式的值。N:表示輸出表達式的序號,從〇開始,必須連續(xù),當為〇時,表示輸出第ー個表達式的值。M:輸出表達式的值所占的列數(shù)。格式化字符串:指定數(shù)據按某種格式輸出。如E為按科學計數(shù)法格式輸出,X為按十六進制輸出等。有如下兒種:Gー常規(guī),E或F中較短的Fー浮點數(shù),常規(guī)表示法Eー用E表示法表示的浮點數(shù)(其中,E代表10的次累)Nー帶有分隔符的浮點數(shù)(在美國為逗號)Cー貨幣,帶有貨幣符號和分隔符(在美國為逗號)D一十進制數(shù),僅用于整型X一十六進制數(shù),僅用于整型1.3.2Console.Write方法功能:將數(shù)據到控制臺,但不產生換行。其余同Console.WriteLine方法。1.3.3Console.ReadLine方法功能:用來從控制臺讀取一行字符,遇到回車鍵結束,若沒有任何輸入則返回nullo3.4Console.Read方法功能:用來從控制臺讀取ー個字符,并返回其對應的整數(shù)值,遇到回車鍵返回,若沒有任何輸入則返回T。1.4創(chuàng)建第一個Windows應用程序4.1Windows桌面開發(fā)環(huán)境(IDE)Windows窗體設計器Windows窗體設計器是進行用戶界面設計的主要工具。當創(chuàng)建一個新的Windows應用程序時,會產生一個空白窗體。當我們雙擊窗體中的任何ー個位置,便會彈出代碼設計器。工具箱工具箱包含.net開發(fā)人員可以使用的所有控件集:1、可以使用其右上角的大頭針將其固定。2、若不小心關閉了工具箱,可以選擇“視圖/工具箱”將其重新打開。3、向窗體中添加控件時,可以單某控件,再在窗體中按住鼠標拖動畫出控件對象,也可雙擊控件,在窗體中生成。4、右擊工具箱,可進行工具箱的其它設置。服務器資源管理器服務器資源管理器是VisualStudio.NET的服務器管理控制臺。使用服務器資源管理器打開數(shù)據連接,登錄服務器,瀏覽它們的數(shù)據庫和系統(tǒng)服務。可以將節(jié)點從服務器資源管理器拖放到VisualStudio.NET設計器上。這將創(chuàng)建新的數(shù)據組件,這些組件預配置為引用所拖放的項。解決方案資源管理器解決方案資源管理器提供項目及其文件的有組織的視圖,并且提供對項目和文件相關命令的便捷訪問。若要訪問解決方案資源管理器,請在“視圖”菜單上選擇“解決方案資源管理器”。屬性窗ロ屬性窗ロ顯示當前選中控件的屬性及事件等信息,用戶可以通過此窗口進行控件狀態(tài)的設置及事件的設計等。當然也可通過代碼進行。.4.2Windows應用程序舉例例1:利用標簽控件顯示“歡迎進入C#編程世界!”。在設計時應該以下兒個問題:(1)創(chuàng)建一個新項目時,我們可以創(chuàng)建多種類型的項目,因此一定要正確選擇相應的項目類型。(2)創(chuàng)建一個新項目時,一定要注意新項目的保存位置,默認位置是“C:\DocumentsandSettings\Administrator\MyDocuments\VisualStudio2005”,如果不想保存在該文件夾下,則需設置目標文件夾。(3)創(chuàng)建一個新項目時,系統(tǒng)會在相應的位置創(chuàng)建一個新文件夾,和相應的文件。(4)當創(chuàng)建新對象時,對象名稱構成一般如下:對象類型標志+對象實際名稱例2:圖片瀏覽器§1.5創(chuàng)建第一個WEB應用程序演示,以后有后續(xù)課程,在此不詳細講解。第2章C#編程基礎§2.1變量與常量相信你應該對變量和常量的概念再熟悉不過了,有關變量和常量的知識都是任何?門編程語言的基礎知識,而每ー門編程語言都有自己相對應的變量和常量的命名規(guī)則和使用方式。2.1.1變量使用變量的一條重要的原則:變量必須先定義后使用,其聲明方式同C++。靜態(tài)變量:帶有“static”修飾符聲明的變量稱為靜態(tài)變量。一旦靜態(tài)變量所屬的類被裝載,直到包含該類的程序運行結束時它將一?直存在。靜態(tài)變量就是該變量類型的默認值。靜態(tài)變量最好是在定義時便賦值。如statica=10;非靜態(tài)變量:不帶有“static”修飾符聲明的變量稱其為實例變量。如inta;類中的非靜態(tài)變量,一旦ー個類的新的實例被創(chuàng)建,直到該實例不再被應用從而所在空間被釋放為止,該非靜態(tài)變量將一直存在。同樣鑒于定義賦值檢查,ー個類的非靜態(tài)變量也應該是在初始化的時候賦值。注:靜態(tài)變量與非靜態(tài)變量的區(qū)別:靜態(tài)變量只需分配一次,且只能通過數(shù)“類名.變量名”的格式進行訪問。而實例變量則隨著對象的創(chuàng)建而被創(chuàng)建,且只能通過“對象名.變量名”的方式進行訪問。例:usingSystem;classStaticTest(publicstaticintstal=10;publicinta2=10;)classStaticExample(publicstaticvoidMainO(StaticTesta,b;a=newStaticTest();b=newStaticTest();StaticTest.stal=StaticTest.stal+10;a2+=10;StaticTest.stal=StaticTest.stal+10;a2+=10;Console.WriteLine(*StaticTest.stal={0},a.a2={1}”,StaticTest.stal,a.a2);Console.WriteLine(*StaticTest.stal={0},b.a2={l}*,StaticTest.stal,b.a2);})分析此程序中各變量的變化情況。局部變量:局部變量是指在ー個獨立的程序塊中,,個for語句、switch語句或者using語句中聲明的變量,它只在該范圍內有效。當程序運行到這個范圍內時,該變量即開始生效,程序離開時變量失效。與其他幾種變量類型不同的是,局部變量不會自動被初始化,所以也就是沒有默認值。在進行賦值檢查時,局部變量被認為沒有被賦值。在局部變量的有效范圍內,在變量的定義以前就使用是不合法的,如果對局部變量超出了其作用范圍,也是不合法的。如下面的代碼:for(intI=0;K10;I++)Iintnum=a;〃這是非法的,因為局部變量a還沒有被定義inta;intb=a;)Num=10;〃其訪問超出了其作用范圍2.1.2常量所謂常量就是其值固定不變的量。從數(shù)據類型來講,常量的類型可以是任何ー種值類型或者是引用類型。ー個常量的聲明,就是聲明程序中要用到的常量的名稱和它的值,與變量一樣,我們可以同時聲明一個或者多個給定類型的常量。常量聲明的格式如下:[修飾符]const類型常量名=常量值其中:常量修飾符可以是:new、public、protected、internal>private。常量的類型必須是下面中的ー種:sbyte、byte、short、ushort>int>uint>ulong>char>float、double>decimaRbool、string或是引用類型(reference-type)。如:publicconstdoubleX=l.0,Y=2.0,Z=3.0;一般地,為了和變量想區(qū)別,常量用大寫字母表示
§2.2數(shù)據類型c#支持兩種主要類型,即值類型和引用類型。值類型可以分為:簡單類型、結構類型、枚舉類型;引用類型有四種:類、代表、數(shù)組和接口。VisualC整NET的數(shù)據類型圖2.1值類型簡單類型簡單類型是直接由一?系列元素構成的數(shù)據類型。這些簡單類型可分為:整數(shù)類型、布爾類型、字符類型和實數(shù)類型。(1)整數(shù)類型整數(shù)類型的變量的值為整數(shù)。C#中有九種整數(shù)類型:短字節(jié)型(sbyte),字節(jié)型(byte)、短整型(short),無符號短整型(ushort)、整型(int)、無符號整型(uint)、長整型(long)、無符號長整型(ulong)C#類型.NETFramework類型描述表示范圍sbyteSystem.Sbyte8-bit有符號整數(shù)類型-128―127byteSystem.Byte8-bit無符號整數(shù)類型〇?255shortSystem.Intl616位有符號整數(shù)-32768?32767□shortSystem.Uintl616位無符號整數(shù)〇?65535intSystem.Int3232-bit有符號整數(shù)類型-2147483648?2147483647uintSystem.Uint3232-bit無符號整數(shù)類型〇?4294967295longSystem.Int6464-bit有符號整數(shù)類型-9223372036854775805?9223372036854775807ulongSystem.Uint6464-bit無符號整數(shù)類型〇?18446744073709551615(2)實數(shù)類型浮點類型:數(shù)學中的實數(shù)不僅包括整數(shù),而且包括小數(shù)。小數(shù)在C#中采用單精度(floaい和雙精度(double)。它們的差別在于取值范圍和精度不同。十進制類型(decimal):是C#專門為我們定義的ー種高精度的數(shù)據類型,主要用于方便我們在金融和貨幣方面的計算。其范圍小于浮點型,但精度比浮點型高,在數(shù)據的后面加上“m”,表示該數(shù)據是十進制類型。類型.NETFramework類型精度大致范圍floatSystem.Single(32位)7位±1.5x10-45-3.4xIO38doubleSystem,double(64位)15?16位±5.Ox1032,1.7x1030SdecimalSystem.Decimal(128位)28~29位士1.0x10-28±7.9x1028(3)字符類型(char型)除了數(shù)字以外,計算機還需要處理的信息主要就是字符了。字符包括數(shù)字字符、英文字符、表達符號等,C#提供的字符類型采用了國際公認的Unicode字符集標準。ー個Unicode的標準字符長度為16位,用它可以表示大多數(shù)的字符類型了。注意:對字符常數(shù),必須用單引號括起,且里面只能有??個字符。另外,我們還可以直接通過十六進制轉義符(前綴'x)或Unicode表示法給字符型變量賦值)(前綴\u),用來在程序中指代特殊的控制字符。常用字符轉義符字符集\a響鈴\n換行符\r回車符\t制表符\\\ヽ’ヾ注意:在C井中“ヽ”般作為轉義字符使用,若不想作為轉義字符使用,則在字符串前使用符號在字如:strings=@"c:\aaa"。(4)布爾類型(bool型)布爾類型是用來表示一個事件或狀態(tài)的“真"和“假’我們知道,不管任何數(shù)據,在計算機的內部都是采用二進制方式處理和存儲。布爾類型表示的邏輯變量只有兩種取值:“真‘'或“假'在C#中分別采用“true”和“false”表示。注意:在C#中布爾類型與整型數(shù)據間不能進行轉換。值類型常量后綴:后綴限定的數(shù)據類型uuint或ulong1long或ulongul或luulongffloatddoublemdecimal結構類型在具體的程序設計中我們經常要把一組相關的信息存放在ー起。把一系列相關的變量組織成為ー個單ー實體的過程,稱為生成結構的過程。這個單ー實體的類型我們就叫做結構類型,每ー個變量稱為結構的成員。結構類型的變量采用struct來進行聲明。下面的程序代碼說明定義ー個通訊錄記錄結構(包括姓名、電話和地址)的定義。usingSystem;usingSystem.Runtime.InteropServices;namespaceConso1eApp1ication4(structPhoneBook|publicstringname;publicstringphone;publicstringaddress;}classClassistaticvoidMain(string[]args)PhoneBookpl;=“張三”;pl.phone=”681500〇”;pl.address="黑龍江ハー農墾大學”;Console.WriteLine("姓名:{0}電話:⑴家庭住址:{2}",,pl.phone,pl.address);}))pl就是ー個通訊錄(PhoneBook)結構類型的變量。上面聲明中的“public”表示對結構類型的成員的訪問權限。對結構成員的訪問通過結構變量名加上訪問符".”號,后跟成員的名稱:="tom";結構類型包含的成員類型沒有限制,可以相同也可不同。值得注意的是:結構與類有很多相似之處,它可以聲明構造器、常量、域、方法、屬性、索引、操作符和嵌套類型等,但也有區(qū)別。如下:(1)結構是值類型,而類是引用類型(2)類可以被繼承,但結構不能被繼承(3)結構無析構函數(shù)。枚舉類型枚舉(enum)是值類型的ー種特殊形式,它從System.Enum繼承而來,并為基礎基元類型的值提供替代名稱,實際上是為ー組在邏輯上密不可分的整數(shù)值提供便于記憶的符號。枚舉類型有名稱、基礎類型和一組字段。基礎類型必須是ー個內置的有符號(或無符號)整數(shù)類型(如Byte,Int32或UInt64)o字段是靜態(tài)文本字段,其中的每ー個字段都表示常數(shù)。同一個值可以分配給多個字段。下面的程序代碼聲明了一個代表星期的枚舉類型的變量。EnumWeekDay{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};WeekDayday;注意:枚舉類型的變量在某一時刻只能取枚舉中某ー個元素的值。如,day這個表示“星期”的枚舉的變量,它的值要么是Sunday,要么是Monday或其他的星期元素,但它在ー個時刻只能代表具體的某一天,不能既是星期二,又是星期?〇Day=Tuseday;按照系統(tǒng)默認,枚舉中的每個元素都是整型(int),且第一個元素的默認值為0,枚舉值可以是不連續(xù)值,但它后面的每一個連續(xù)的元素的值總是在前一個元素值的基礎上按加1遞增。在枚舉中,也可以給元素直接賦值。下面的程序代碼把星期一的值設為1,其后的元素的值分別為2,3……usingSystem;classClassi(enumWeekDay{Sunday,Monday=10,Tuesday,Wednesday,Friday,Saturday};staticvoidMain(string[]args){Console.WriteLine(*{0},{1}*,WeekDay.Sunday,(int)WeekDay.Sunday);Console.WriteLine(*{0},{1}*,WeekDay.Monday,(int)WeekDay.Monday);Console.WriteLine(*{0},{1}*,WeekDay.Wednesday,(int)WeekDay.Wednesday);))為枚舉類型的元素所賦值的值的類型限于long、int、short和byte等整數(shù)類型。可空類型可空類型是System.Nullable結構的實例??煽疹愋涂梢员硎酒浠A值類型正常范圍內的值,再加上一個null值。例如,Nullable<Int32>,讀作“可空的Int32",可以被賦值為ー2147483648到2147483647之間的任意值,也可以被賦值為null值??煽疹愋涂赏ㄟ^下面兩種方式中的ー種聲明:System.Nullable<T>variableー或ーT?variable例:int?k;k=null;k=100;Console.WriteLine(k);可空類型的每個實例都具有兩個公共的只讀屬性:HasValue和Value,通過HasValue屬性可以判斷該實例是否為空,通過Value屬性可取出該實例的值。2.2.2引用類型在這里,引用的含義是該類型的變量不直接存儲所包含的值,而是指向它所要存儲的值。即引用類型存儲實際數(shù)據的引用值的地址。值類型內存分配在堆棧中,而引用類型,實際內存則分配在堆中,但在堆棧中創(chuàng)建一個引用變量,其值為堆中實際引用的地址。C#中的引用類型有四種:類、代表、數(shù)組和接口。usingSystem;classClassi{publicintvalue=0;}classTest(publicstaticvoidMain(){intvall=0;intval2=vall; 〃值類型,內存分配在堆棧中val2=123;Classirefl=newClassi(); 〃引用類型,內存分配在堆中Classiref2=newClassi();ref2=ref1;ref2.value=123;Console.WriteLine(*values:{0},{1}”,vail,val2);Console.WriteLine("references:{0},{1}",refl.value,ref2.value);堆棧堆堆棧堆類類是面向對象編程的基本單位,是ー種包含數(shù)據成員、函數(shù)成員和嵌套類型的數(shù)據結構。類的數(shù)據成員有常量、域和事件。函數(shù)成員包括方法、屬性、索引指示器、運算符等。類和結構同樣都包含了自己的成員,但它們之間最主要的區(qū)別在于:類是引用類型,而結構是值類型。類支持繼承機制,通過繼承,派生類可以擴展基類的數(shù)據成員和函數(shù)成員,進而達到代碼重用和設計重用的目的。下面介紹兩個經常用到的類:object類:它是所有其他類型的基類,C#中的所有類型都直接或是間接地從object類中繼承。因此,對ー個。bject的變量可以賦予任何類型的值。Intx=25;objectobjl;objl=x;objectobj2='A';對object類型的變量聲明采用object關鍵字,這個關鍵字是在?NET平臺中為我們提供的預定義的名字空間System中定義的,是類System.Object的別名。String類:稱為字符串類型,專門用于對字符串的操作,字符串必須用
括起。同樣,這個類也是在.NET平臺中為我們提供的預定義的名字空間System
中定義的,是類System.String的別名。字符串在實際中應用非常的廣泛,在類的定義中封裝了許多內部的操作,我們只要簡單地加以利用就可以了??梢杂眉犹?+”合并兩個字符串,采用下標從字符串中獲取字符等。StringStringl="Welcome";stringString2="Welcome''+"everyone";charc=Stringl[〇];〃可以使用數(shù)組的方式去訪問其中的每ー個字符boolb=(Stringl==String2);代表(委托)在C#中取消了C和C++中的指針的這個概念。而代表(委托)實際上相當于是C#中的函數(shù)指針原型,與指針不同的是,代表在C#中是類型安全的。數(shù)組在進行批量處理數(shù)據的時候,我們要用到數(shù)組。數(shù)組是ー組類型相同的有序數(shù)據。數(shù)組按照數(shù)組名、數(shù)據元素的類型和維數(shù)來進行描述。C#中提供Ststem.Array類是所有數(shù)組類型的基類。接口接口定義了一個協(xié)議(conrtact)。ー個類或結構要實現(xiàn)接口就必須堅持這種協(xié)議。接口可以包括方法、屬性、索引和事件作為成員。下面的程序代碼說明了一個接口,它包含一個索引、ー個事件E、一"個方法F和一個屬性P。2.3隱式類型ーーVAR類型VAR是3.5新出的ー個定義變量的類型,其實也就是弱化類型的定義,VAR可代替任何類型(可變類型),編譯器會根據上下文來判斷你到底是想用什么類型。至于什么情況下用到VAR 我想就是你無法確定自己將用的是什么類型時就可以使用VAR類型,類似OBJECT但是效率比OBJECT高。使用var定義變量時有以下四個特點:必須在定義時初始化。也就是必須是vars="abed”形式,而不能是如下形式:vars;s="abed";?但初始化完成,就不能再給變量賦與初始化值類型不同的值了。var要求是局部變量。使用var定義變量和object不同,它在效率上和使用強類型方式定義變量完全ー樣。2.2.4類型轉換不同的數(shù)據類型在?定條件下是可以相互轉換的,轉換的方法有:隱式轉換隱式轉換即由系統(tǒng)進行的轉換。能進行隱式轉換的數(shù)據類型下表。類型可以隱式轉換成的數(shù)據類型boolobjectbytedecimal,double,float,int,uint,long,ulong,object,short,ushortsbytedecimal,double,float,int,long,object,shortchardecimal,double,float,int,uint,long,ulong,object,ushortdecimalobjectdoubleobjectfloatdouble,objectintdecimal,double,float,long,objectuintdecimal,double,float,long,ulong,objectlongdecimal,double,float,objectalongdecimal,double,float,objectshortdecimal,double,float,int,long,objectushortdecimal,double,float,int,uint,long,ulong,objectusingSystem;classClassi{staticvoidMain(string[]args)(inti=10;bytej=20;shortk=34;〃若shortk=I;則出現(xiàn)錯誤,不能進行隱式轉換inta=j;floatb二i;doublec=k;Console.WriteLine(*a={0}?b={l},c={2}*,a,b,c);))顯示轉換格式:(類型標識符)表達式顯式轉換即由用戶進行強行轉換。能進行顯式轉換的數(shù)據類型參見MSDN。例:(int)10.24;Doublex=10.6;Shorty=(short)x使用Convert類進行轉換該類用于將一個基本數(shù)據類型轉換為另一個基本數(shù)據類型。其常用方法如下表:ToBase64CharArray將8位無符號整數(shù)數(shù)組子集的值轉換為等效的由以64為基的數(shù)字組成的Unicode字符數(shù)組子集。參數(shù)將子集指定為輸入和輸出數(shù)組的偏移量和輸入數(shù)組中的元素數(shù)。ToBase64String將8位無符號整數(shù)數(shù)組的值轉換為它的等效String表示形式(由以64為基的數(shù)字組成)。ToBoolean將指定的值轉換為等效的布爾值。ToByte將指定的值轉換為8位無符號整數(shù)。ToChar將指定的值轉換為Unicode字符。ToDateTime將指定的值轉換為DateTime,ToDecimal將指定值轉換為Decimal數(shù)字。ToDouble將指定的值轉換為雙精度浮點數(shù)字。Tolntl6將指定的值轉換為16位有符號整數(shù)。Tolnt32將指定的值轉換為32位有符號整數(shù)。Tolnt64將指定的值轉換為64位有符號整數(shù)。ToSByte將指定的值轉換為8位有符號整數(shù)。ToSingle將指定的值轉換為單精度浮點數(shù)字。ToString將指定值轉換為其等效的String表示形式。ToUIntl6將指定的值轉換為16位無符號整數(shù)。ToUInt32將指定的值轉換為32位無符號整數(shù)。ToUInt64將指定的值轉換為64位無符號整數(shù)。使用Parse方法進行轉換格式:type.Parse(stringtype)功能:將數(shù)字的字符串表示形式轉換為它的等效的數(shù)值型數(shù)據。例: strings="123";intx=int.Parse(s);doubley=double.Parse(Console.ReadLineO);使用ToString()方法進行轉換當我們將其它類型的數(shù)據轉換為string型時,可以使用object類的ToStringO方法。此方法經常使用,必須記住。格式:數(shù)據.ToStringO;例:doublexx=10.89;boolyy=true;Console.WriteLine(*123*+xx.ToStringO+yy.ToStringO);2.2.5裝箱和拆箱在面向對象的編程語言中,我們通常使用的是對象。但為了提高速度,C#也提供了簡單數(shù)據類型。因此,C#程序既包含一大堆的對象,又有大量的值。在這種環(huán)境下,讓這兩者協(xié)同工作始終是ー個不可回避的問題,你必須要有一種讓引用和值進行通信的方法。在C#以及.NET運行時環(huán)境中,這個“通信”問題通過裝箱(Boxing)和拆箱(Unboxing)解決。裝箱是ーー種讓值類型看起來象引用類型的處理過程。當ー個值類型(簡單數(shù)據類型)被用于ー個要求或者可以使用對象的場合時,裝箱操作自動進行。裝箱ー個value-type值的步驟包括:分配ー個對象實例,然后把value-type值復制到對象實例。拆箱所執(zhí)行的動作與裝箱相反,它把ー個引用類型轉換成值類型。拆箱操作的步驟包括:首先檢查并確認對象實例確實是給定value-type的ー個經過包裝的值,然后從對象實例復制出值。因此我們也可認為裝箱和拆箱是值類型和引用類型的轉換。裝箱在進行裝箱轉換時,有隱式轉換和顯示轉換兩種例:隱式轉換intinti=123;object〇=inti; //Boxing例:顯式轉換intinti=123;objecto=(object)inti; //Boxing在娛t 在地上?ルInti=123;o (格j翊)If ?intobjecto=l; 1拆箱例:intinti=123;objecto=(object)inti; //Boxingintk=(int)o //Unboxing例:
//boxing,cs//BoxinganintegervariableusingSystem;classTestBoxing{publicstaticvoidMainO(inti=123; 〃裝箱objecto=i;//Implicitboxingi=456; //Changethecontentsofiintj=(int)o;〃拆箱Console.WriteLine(,zThevalue-typevalue={0}",i);Console.WriteLine("Theobject-typevalue={〇ナ,o);Console.WriteLine("Thevalue-typevalue={0}",j);}在堆板上 在堆上123Int1=123;objecto=l;(將Int1=123;objecto=l;(將i卻)「123 1intj=(int)〇:§2.3運算符和表達式2.3.1運算符運算符及其優(yōu)先級優(yōu)先級種類操作符1初級的(x)X.yf(x)a[x]x++x--newtypeofsizeofcheckedunchecked2一元的+-! ++x—x(T)x3乘法的*/%4加法的4--5移位??6關系的<><=>=is7相等的=f二8邏輯與&9邏輯異或當且僅當表達式的ー邊為真時オ為真10邏輯或111條件與&&12條件或II13條件的?:14賦值=*=/=%=+=-=?=?=&=へ=1=說明:1、new:用于創(chuàng)建對象和調用構造函數(shù),例如:ClassiMyClass=newClassi();也用于為值類型調用默認的構造函數(shù),例如:intmylnt=newint();2、typeof:用于獲得某ー類型的System.Type類型。3、sizeof:獲得值類型數(shù)據在內存中占用的字節(jié)數(shù),僅適用于unsafe模式,在程序編譯時也使用/unsafe選項。usingSystem;classSizeClass(unsafestaticvoidMain()(Console,WriteLine("Thesizeofshortis{0}.",sizeof(double));Console.WriteLine("Thesizeofintis{0}.",sizeof(int));Console.WriteLine("Thesizeoflongis{0}.,sizeof(long));})4、checked/unchecked:用于控制整型算術運算和轉換的溢出檢查/忽略。usingSystem;classClassi{staticvoidMain(string[]args)(shortx,y;x=32767;y=32767;shortz=unchecked((short)(x+y));〃此處溢出Console.WriteLine("z={0}",z);}}若在溢出位置使用checked運算符,結果又如何呢?5、is:用于檢查對象的運行時引用類型是否與給定類型兼容usingSystem;classClassistaticvoidMainOintk=10;boolz=kisint;Console.WriteLine(*z={0}",z);)I6、對相等及不相等的判斷:(參見教材22頁)(1)對于預定義的值類型,如果操作數(shù)的值相等,則==返回真,否則,返回假。(2)對于除string以外的引用類型,如果兩個操作數(shù)引用相同的對象,則==返回真。對于string類型,將比較字符串的值。例:usingSystem;classClassi{staticvoidMain(string[]args)(stringsi="123";strings2="123";objectrl=newobject();objectr2=newobject();rl=10;r2=rl;Console.WriteLine(sl==s2);Console.WriteLine(rl==r2);r2=10;Console.WriteLine(rl==r2);}}(3)也可使用Equals方法判斷兩個數(shù)據是否相等。對值類型,只要兩數(shù)據有相同的值便相等,對引用類型,如果兩數(shù)據引用了相同的對象或具有相同的值便相等,否則不相等。例:usingSystem;classClassi{staticvoidMain(string[]args)(stringsl="123";strings2="123";objectrl=newobject();objectr2=newobject();rl=10;r2=rl;Console.WriteLine(sl.Equals(s2)); //trueConsole.WriteLine(rl.Equals(r2)); //trueobjectr3=newobject();r3=10;Console.WriteLine(rl.Equals(r3));//true})(4)若要判斷兩個引用類型是否引用了同一個對象,則可使用object.referenceEquals方法進行判斷。例:usingSystem;classClassi{staticvoidMain(string[]args)(objectrl=newobject();objectr2=newobject();rl=10;r2=rl;Console.WriteLine(Object.ReferenceEquals(rl,r2));r2=10;Console.WriteLine(Object.ReferenceEquals(rl,r2));}}7、賦值運算符及條件運算符為右結合,其余的為左結合運算。運算符舉例ヽusingSystem;classClassi(staticvoidMain()(intiresult,irem;doubledresult,drem;iresult=10/4;irem=10%4;dresult=10.0/4.0;drem=10.0%4.0;Console.WriteLine(*{0},{1},iresult,irem);Console.WriteLine("{0},{1}”,dresult,drem);)usingSystem;classClassi(staticvoidMain(){intx=2;inty=x++;Console.WriteLine("y二{0}",y);y=++x;Console.WriteLine("y=(0)",y);))usingSystem;classClassi(staticvoidMainO(inta=2;intb=3;Console.WriteLine(a&b);Console.WriteLine(ab);Console.WriteLine(ab);Console.WriteLine(a>>b);Console.WriteLine(a<<b);Console.WriteLine(a=b);Console.WriteLine(a!=b);)}3.2常用類及結構String類String類提供字符串的常用操作,其常用成員如下:公共屬性Chars獲取此實例中位于指定字符位置的字符。實際上一個String型數(shù)據相當于ー個char型數(shù)組,因此可以使用s[i]的格式訪問其中的每一個元素。
Length獲取此實例中的字符數(shù)。公共方法Copy創(chuàng)建一個與指定的String具有相同值的String的新實例。CopyTo將指定數(shù)目的字符從此實例中的指定位置復制到Unicode字符數(shù)組中的指定位置。Equals已重寫。確定兩個String對象是否具有相同的值。Format將指定的String中的每個格式項替換為相應對象的值的文本等效項。IndexOf報告String在此實例中的第一個匹配項的索引或ー個或多個字符的索引。Insert在此實例中的指定索引位置插入一個指定的String實例。LastIndexOf報告指定的Unicode字符或String在此實例中的最后ー個匹配項的索引位置。Remove從此實例中的指定位置開始刪除指定數(shù)目的字符。Replace將此實例中的指定Unicode字符或String的所有匹配項替換為其他指定的Unicode字符或StringoSubstring從此實例檢索子字符串。ToLower返回此String的小寫形式的副本。ToString已重寫。將此實例的值轉換為StringoToUpper返回此String的大寫形式的副本。Trim移除此實例的開始位置和末尾空格。TrimEnd移除此實例的結尾空格。TrimStart移除此實例的開始位置空格Format方法:格式化輸出信息,利用string類中的Format方法可以將輸出信息格式化,并返回…字符串。其一般格式為:string.Format(格式控制,參數(shù)列表)其中格式格式同Console.WriteLine方法中的格式控制。strings=string.Format("格式控制:s={0}",123);Console.Write!Jne(s);System.Math類常用的數(shù)學方面的方法請參考:System.Math類,此類中的方法多為靜態(tài)方
法。為三角函數(shù)、對數(shù)函數(shù)和其他通用數(shù)學函數(shù)提供常數(shù)和靜態(tài)方法。公共字段E表示自然對數(shù)的底,它由常數(shù)e指定。PI表示圓周和其直徑的比率,它由常數(shù)K指定。公共方法Abs已重載。返回指定數(shù)字的絕對值。Acos返回余弦值為指定數(shù)字的角度。Asin返回正弦值為指定數(shù)字的角度。Atan返回正切值為指定數(shù)字的角度。Atan2返回正切值為兩個指定數(shù)字的商的角度。BigMul生成兩個32位數(shù)字的完整乘積。Ceiling返回大于或等于指定數(shù)字的最小整數(shù)。Cos返回指定角度的余弦值。Cosh返回指定角度的雙曲余弦值。DivRem已重載。返回兩個數(shù)字的商,并將余數(shù)作為輸出參數(shù)進行傳遞。Exp返回e的指定次累。Floor返回小于或等于指定數(shù)字的最大整數(shù)。1EEERemainder返回一指定數(shù)字被另一指定數(shù)字相除的余數(shù)。Log一重載。返回指定數(shù)字的對數(shù)。Log10返回指定數(shù)字以10為底的對數(shù)。Max已重裁。返回兩個指定數(shù)字中較大的一個。Min已重載。返回兩個數(shù)字中較小的ー個。Pow返回指定數(shù)字的指定次裏。Round已重載。返回最接近指定值的數(shù)字。Sign已重載。返回表示數(shù)字符號的值。Sin返回指定角度的正弦值。Sinh返回指定角度的雙曲正弦值。Sqrt返回指定數(shù)字的平方根。Tan返回指定角度的正切值。Tanh返回指定角度的雙曲正切值。
DateTime結構(參見12.4)該結構通常用于表示日期和時間類型的數(shù)據。其常用成員如下:常用屬性名稱說明Date獲取此實例的日期部分。Day獲取此實例所表示的日期為該月中的第幾天。DayOfWeek獲取此實例所表示的日期是星期幾。DayOfYear獲取此實例所表示的日期是該年中的第幾天。Hour獲取此實例所表示日期的小時部分。Millisecond獲取此實例所表示H期的毫秒部分。Minute獲取此實例所表示日期的分鐘部分。Month獲取此實例所表示日期的月份部分。Now獲取ー個DateTime對象,該對象設置為此計算機上的當前H期和時I,hJ,表示為本地時間。Second獲取此實例所表示日期的秒部分。Ticks獲取表示此實例的H期和時間的刻度數(shù)。TimeOfDay獲取此實例的當天的時間。Today獲取當前日期。Year獲取此實例所表示日期的年份部分。常用方法名稱說明Add將指定的TimeSpan的值加到此實例的值上。AddDays將指定的天數(shù)加到此實例的值上。Addllours將指定的小時數(shù)加到此實例的值上。AddMilliseconds將指定的亳秒數(shù)加到此實例的值上。AddMinutes將指定的分鐘數(shù)加到此實例的值上。AddMonths將指定的月份數(shù)加到此實例的值上。AddSeconds將指定的秒數(shù)加到此實例的值上。AddTicks將指定的刻度數(shù)加到此實例的值上。AddYears將指定的年份數(shù)加到此實例的值上。DaysInMonth返回指定年和月中的天數(shù)。Parse已重載。將日期和時間的指定字符串表示轉換成其等效的DateTimeoToLongTimeString將此實例的值轉換為其等效的長時間字符串表示形式。ToShortDateString將此實例的值轉換為其等效的短日期字符串表示形式。ToShortTimeString將此實例的值轉換為其等效的短時間字符串表示形式。ToString已重載。已重寫。將此實例的值轉換為其等效的字符串表不〇§2.4結構化程序設計4.1語句類型語句塊格式:{語句塊}空語句格式:;標簽語句格式:標識符:語句聲明語句變量聲明語句:格式:類型變量名匸初始值][一..];常量聲明語句:格式:const類型常量名=常量值[,…];表達式語句格式:表達式;如:intx=l;X++;2.4.2三大結構選擇語句.1if語句格式:if(布爾表達式)語句[else語句].2switch語句格式:switch(表達式)(Case[常量表達式:語句;break;][default:語句;break;])注意:在C#中,語句后若無goto語句,則必須使用break語句。循環(huán)語句.1while語句和dowhile語句格式:while(布爾表達式)語句:do語句while(布爾表達式);.2for語句格式:for([初始化語句];[布爾表達式];[重復語句])語句;foreach語句格式:foreach(類型變量in集合)語句說明:該語句僅用于對集合中的數(shù)據進行只讀訪問。例:usingSystem;classmyclass(staticvoidMain()(int[]x={1,2,3,4,5,6,7,8};foreach(intiinx)Console.WriteLine(i);}.4其余語句Goto:無條件跳轉語句Break:結束當前循環(huán)的語句Continue:結束當次循環(huán)的語句練習:1、求1+2+…+100的和。2、通過鍵盤輸入三角形的三邊,若能構成三角形,則求其面積。3、輸入ー組正整數(shù),以〇為結束標志,并求其最大值、最小值及其和。§2.5數(shù)組數(shù)組類型屬于引用類型,它由抽象類System.Array派生而來。5.1ー維數(shù)組數(shù)組聲明格式:類型口數(shù)組名=new類型名[長度]類型口數(shù)組名;數(shù)組名=new類型名[長度];數(shù)組初始化數(shù)組初始化是指在定義時直接給數(shù)組賦初值。格式如下:類型口數(shù)組名={初值列表};或類型口數(shù)組名=new類型名口{初值列表}〃此時口內可不指定長度,若要指定長度,必須與初值列表的值的個數(shù)一致。2.5.2二維數(shù)組格式:類型[,]數(shù)組名=new類型名[長度1,長度2]或:類型[,]數(shù)組名;數(shù)組名=new類型名[長度1I長度2]2.5.3交錯數(shù)組(參差數(shù)組)交錯數(shù)組是元素為數(shù)組的數(shù)組。交錯數(shù)組元素的維度和大小可以不同。交錯數(shù)組有時稱為“數(shù)組的數(shù)組“。其聲明格式如下:類型口口數(shù)組名=new類型[長度]口在交錯數(shù)組中,每一行又是ー個ー維數(shù)組,所以長度可以不等,在使用時可對每一行再單獨定義。主要用于處理可變長的數(shù)據集合。例如:輸出楊輝三角答案:2.5.4System.Array類提供創(chuàng)建、操作、搜索和排序數(shù)組的方法,因而在公共語言運行庫中用作所有數(shù)組的基類。
公共屬性Length獲得一個32位整數(shù),該整數(shù)表示Array的所有維數(shù)中元素的總數(shù)。LongLength獲得?個64位整數(shù),該整數(shù)表示Array的所有維數(shù)中元素的總數(shù)。Rank獲取Array維數(shù)公共方法BinarySearch已重載。使用二進制搜索算法在ー維的排序Array中搜索值。Clear將Array中的ー系列元素設置為零、false或空引用(VisualBasic中為Nothing),具體取決于元素類型。Copy已重載。將一個Array的一部分復制到另ー個Array中,并根據需要執(zhí)行強制類型轉換和裝箱。Createlnstance已重載。初始化Array類的新實例。GetLength獲取一個32位整數(shù),該整數(shù)表示Array的指定維中的元素數(shù)。GetLongLength獲取ー個64位整數(shù),該整數(shù)表示Array的指定維中的元素數(shù)。GetLowerBound獲取Array中指定維度的下限。GetType獲取當前實例的Type。GetUpperBound獲取Array的指定維度的上限。GetValue已重載。獲取當前Array中指定元素的值。索引指定為一個32位整數(shù)數(shù)組。IndexOf已重裁。返回ー維Array或部分Array中某個值第一個匹配項的索引。Initialize通過調用值類型的默認構造函數(shù),初始化值類型Array的每ー個元素。LastIndexOf」重載。返回ー維Array或部分Array中某個值的最后一個匹配項的索引。Reverse已重載。反轉ー維Array或部分Array中元素的順序。SetValue已重載。將當前Array中的指定元素設置為指定值。Sort已重載。對一維Array對象中的元素進行排序。ToString返回表示當前Object的Stringo例:usingSystem;classClassiint[]myarray=newint[20];staticvoidMainOClassimy=newClassi();Randomr=newRandom();for(inti=0;i<=my.myarray.Length-1;i++)my.myarray.SetValue(r.Next(200,500),i);printarray(my.myarray);Array.Sort(my.myarray);printarray(my.myarray);strings=Console.ReadLineO;intelment=Convert.Tolnt32(s);intposition=Array.BinarySearch(my.myarray,elment)+1;Console.WriteLine("thepositionis{0}",position);)staticvoidprintarray(int[]ma)(foreach(intiinma)Console.Write("{0,4)*,i);Console.WriteLine();}§2.6集合(自學)集合類是System.Collections名空間中的數(shù)據結構,它們提供了為C#程序管理數(shù)據的各種方法,它們能夠代替數(shù)組以便更靈活地管理對象組。ー些較流行的集合是用于管理動態(tài)地可調整大小的數(shù)組、表、隊列和堆棧的數(shù)據。類說明ArrayList大小可按需動態(tài)增加的數(shù)組。BitArray管理位值的壓縮數(shù)組,該值表示為布爾值,其中true表示位是打開的(1).false表示位是關閉的(0)。Hashtable表示鍵/值對的集合,這些鍵/值對根據鍵的哈希代碼進行組織。Queue表示對象的先進先出集合。SortedList表示鍵/值對的集合,這些鍵和值按鍵排序并可按照鍵和索引訪問。Stack表示對象的簡單的后進先出集合。2.6.1ArrayList集合ArrayList集合主要是使用大小可按需動態(tài)增加的數(shù)組實現(xiàn)IList接口,但它與數(shù)組的主要區(qū)別有:(1)數(shù)組中的數(shù)據必須是同類型,而ArrayList集合中的數(shù)據可以是不同類
型的數(shù)據。(2)數(shù)組的大小是固定的,而ArrayList集合是可以是動態(tài)的成倍增長的。公共構造函數(shù)ArrayList構造函數(shù)己重載。初始化ArrayList類的新實例。公共屬性Capacity獲取或設置ArrayList可包含的元素數(shù)。Count獲取ArrayList中實際包含的元素數(shù)。IsFixedSize獲取ー個值,該值指示ArrayList是否具有固定大小。IsReadonly獲取ー個值,該值指示ArrayList是否為只讀。公共方法Add將對象添加到ArrayList的結尾處。BinarySearch已重我。使用對分檢索算法在已排序的ArrayList或它的一部分中查找特定元素。Clear從ArrayList中移除所有元素。Contains確定某個元素是否在ArrayList中。CopyTo已重載。將ArrayList或它的一部分復制到ー維數(shù)組中。Equals已重載。確定兩個Object實例是否相等。FixedSize己軍我。返回具有固定大小的列表包裝,其中的元素允許修改,但不允許添加或移除。GetEnumerator已重載。返回可循環(huán)訪問ArrayList的枚舉數(shù)。GetRange返回ArrayList,它表示源ArrayList中元素的子集。IndexOf已重載。返回ArrayList或它的一部分中某個值的第一個匹配項的從零開始的索引。Insert將元素插入ArrayList的指定索引處。InsertRange將集合中的某個元素插入ArrayList的指定索引處。LastIndexOf已重載。返回ArrayList或它的一部分中某個值的最后一個匹配項的從零開始的索引。Readonly已重載。返回只讀的列表包裝。Remove從ArrayList中移除特定對象的第一個匹配項。RemoveAt移除ArrayList的指定索引處的元素。RemoveRange從ArrayList中移除一定范圍的元素。Reverse」重載。將ArrayList或它的一部分中元素的順序反轉。SetRange將集合中的元素復制到ArrayList中一定范圍的元素上。Sort已重載。對ArrayList或它的一部分中的元素進行排序。ToArray己重載。將ArrayList的元素復制到新數(shù)組中。ToString返回表示當前Object的String〇TrimToSize將容量設置為ArrayList中元素的實際數(shù)量。舉例:publicA門?ayList();初始化ArrayList類的新實例,該實例為空并且容量為16〇publicArrayList(int);初始化ArrayList類的新實例,該實例為空并且具有指定的初始容量。usingSystem;usingSystem.Collections;classmyclass(staticvoidMainO(ArrayListmyall=newArrayList();ArrayListmyal2=newArrayList(2);Console.WriteLineCmyall,capacity:{0},count:{1}”,myall.Capacity,myall.Count);Console.WriteLine("myal2.capacity:{0},count:{1}",myal2.Capacity,myal2.Count);myall.Add(10);myal1.Add(12);myall.Add("aldk");myall.Add(3>5);myall.Add('1');for(inti=0;i<=14;i++)myal2.Add(2*i+1);for(inti=0;i<myal1.Count;i++)Console.Write("{0}",myall[i]);Console.WriteLine();for(inti=0;i<myal2.Count;i++)Console.Write("{0}",mya12[i]);Console.WriteLine();Console.WriteLine("myall,capacity:{0},count:{lj,myall.Capacity,myall.Count);Console.WriteLine("myal2.capacity:{0},count:{1},myal2.Capacity,myal2.Count);myal2.ReverseO;foreach(intelementinmyal2)Console.Write("{0}element);Console.WriteLine();mya12.Remove(19);foreach(intelementinmyal2)Console.Write("{0}",element);Console.WriteLine();2.6.2BitArray集合BitArray集合是管理位ー級數(shù)據的數(shù)據結構,該值表示為布爾值,其中true表示位是打開的(1),false表示位是關閉的(0)〇usingSystem;usingSystem.Collections;classmyclass{staticvoidMainO(BitArraymyba=newBitArray(4);myba[2]=true;for(inti=0;i<myba.Length;i++)Console.Write(myba[i]+*");Console.WriteLine();myba.SetAll(true);for(inti=0;i<myba.Length;i++)Console.Write(myba[i]+/z");Console.WriteLine();})例:利用篩選法求2—100間的所有素數(shù)。顯ホ答案:2.6.3HashTable集合表示鍵/值對的集合,每個元素是ー個存儲在DictionaryEntry(定義可設置或檢索的字典鍵值對)對象中的鍵/值對。鍵不能為空引用,但值可以。每ー個值都必須有唯啲鍵來標識,對值的添加和索引必須通過鍵。具體成員參加幫助。usingSystem;usingSystem.Collections;publicclassSamplesHashtable(publicstaticvoidMainO(HashtablemyllT=newHashtableO;myHT.Add("First","Hello");myHT.Add("Second","World");myHT.Add("Third","!");Console.WriteLine(myHT["Second"]);Console.WriteLine();2.6.4Queue集合Queue集合表示對象的先進先出集合。具體成員參加幫助。usingSystem;usingSystem.Collections;publicclassSamplesHashtablepublicstaticvoidMainOQueueq=newQueue();q.Enqueue("messagel");q.Enqueue("message2");q.Enqueue("message3");Console.WriteLine(q.Dequeue0);Console.WriteLine(q.Dequeue());Console.WriteLine(q.Dequeue());})例:計算先進先出算法的缺頁率。2.6.5SortedList集合SortedList類類似于Hashtable和ArrayList間的混合。(1)與Hashtable—樣,SortedList也基于!Dictionary接口;因此,SortedList的每?一元素都是鍵和值對。SortedList提供只返回鍵列表或只返回值列表的方法。(2)與ArrayList一樣,SortedList是元素序列。它被索引,并且根據特定的比較器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙投資競業(yè)書合同
- 大班數(shù)學《坐船去探險》課件
- 手足口病風趣幽默講解
- 2024房屋修繕合同
- 小學課外活動記錄20篇-20211116120635
- 2024新版家政保姆合同樣本
- 2024安置房買賣合同范本(標準版)
- 2024離婚合同協(xié)議書范本范文有子女
- 2024學校食堂租賃合同
- 2024新版影視劇攝制委托貸款合同
- 《小型水庫雨水情測報和大壩安全監(jiān)測設施建設與運行管護技術指南》
- 建筑施工現(xiàn)場作業(yè)人員應急救援培訓內容
- 2024年中國郵政集團限公司海南省分公司社會招聘124人【重點基礎提升】模擬試題(共500題)附帶答案詳解
- 2024年建筑《主體結構及裝飾裝修》考試習題庫(濃縮500題)
- 幼兒園小班科學課件:《菊花開了》
- 2024年遼寧高考物理原題帶解析
- 抖音火花合同電子版獲取教程
- 蠟泥灸的臨床應用課件
- DB11-T 2192-2023 防汛隱患排查治理規(guī)范 市政基礎設施
- 幼兒教師課題研究方法
- 2024年-新生兒復蘇參考課件
評論
0/150
提交評論