版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
北京?;萍奸_展有限責任公司VisualC#概述VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述VisualStudio2005編程環(huán)境VisualStudio2005可以用來創(chuàng)建Windows應用程序和網(wǎng)絡應用程序,也可以用來創(chuàng)建網(wǎng)絡服務,智能設備應用程序和Office插件。VisualStudio2005是一個提供了豐富工具的編程環(huán)境。包括TeamTest設置、VisualBasic開發(fā)設置、VisualC#開發(fā)設置、VisualC++開發(fā)設置、VisualJ#開發(fā)設置、Web開發(fā)設置、常規(guī)開發(fā)設置。首次運行需選擇,以后每次啟動都將默認為該設置。如要更改,則通過“工具——導入和導出設置”實現(xiàn)。VisualStudio已安裝的模板包括:Windows應用程序、類庫、Windows控件庫、控制臺應用程序、空項目、類庫、Web控件庫、Windows服務以及CrystalReports應用程序。工程組成1..sln解決方案文件,這是最頂級的解決方案文件,每個應用程序都有一個。包含了對一個或多個工程文件的引用。2.C#工程文件夾,包含以下內(nèi)容:.csproj工程文件,引用一個或多個包含工程源代碼以及其他內(nèi)容的文件,在一個工程中,所有源代碼都必須使用相同的編程語言來編寫。AssemblyInfo.cs文件,在Properties文件夾下,用來添加“屬性”,如作者姓名、程序編寫日期等。.cs工程代碼文件,是工程最初創(chuàng)立時,在“代碼和文本編輯器”窗口中顯示的文件。bin和obj文件夾,是在生成應用程序時創(chuàng)立的,其中包含了程序的可執(zhí)行版本和其他一些文件。如bin\Debug下的.exe是編譯好的程序,調(diào)試|開始執(zhí)行時,會運行該程序,.pdb和.vhost.exe文件包含了在調(diào)試模式中運行程序時VisualStudio要使用的信息。VisualStudio2005編程環(huán)境使用命名空間命名空間能為各種標識符創(chuàng)立一個已命名的容器。同名的兩個類如果在不同的命名空間中,那么相互是不會混淆的。應該在命名空間中定義你所有的類,VisualStudio2005環(huán)境默認使用工程名稱作為頂級命名空間。.NETFramework中的每個類都存在于一個命名空間中。如,Console類存在于System命名空間中。這意味著它的完全限定名稱是System.Console。Using預編譯指令可以用來限定即將使用的命名空間。在后續(xù)的代碼中,不需要再用命名空間來顯式地限定每一個名稱。VisualStudio在每次新建工程時,都會自動添加以下語句:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;VisualStudio2005編程環(huán)境VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述命名變量使用小寫字母作為變量名的首字母。在包含多個字母的標識符中,從第二個單詞開始,每個單詞都采取首字母大寫的形式。聲明變量需要在一個聲明語句中聲明變量的類型和名稱,并以分號來終止。一個變量必須賦值后才能使用,否那么程序是無法編譯的?!?”是賦值操作符,用來將右側的值賦給左側的變量。使用變量數(shù)據(jù)類型描述大小(位)范圍示例int整數(shù)32-231到231-1intcount;count=42;long長整數(shù)64-263到263-1longwait;wait=42L;float浮點數(shù)32±3.4×1038floataway;away=0.42F;double雙精度浮點數(shù)64±1.7×10308doubletrouble;trouble=0.42;decimal貨幣值12828個各不相同的數(shù)字decimalcoin;coin=42M;string字符序列每字符16不適用stringvest;vest=“42”;char單字符160到216-1chargrill;Grill=‘4’;bool布爾值8True或falseboolteeth;teeth=false;根本數(shù)據(jù)類型“+”:加法“-”:減法“*”:乘法“/”:除法“%”:求余
通常不建議對不同類型的數(shù)值進行算術操作,并且計算結果的數(shù)值類型與操作數(shù)相同。
優(yōu)先級:“*”“/”“%”的優(yōu)先級高于“+”“-”的優(yōu)先級,可以使用圓括號來覆蓋優(yōu)先級。
結合性:以上幾種操作符均具有左結合性。算術操作符“++”:遞增“--”:遞減前綴和后綴
count++;//后綴遞增生成的值是遞增發(fā)生之前的count值++count;//前綴遞增生成的值是遞增發(fā)生之后的count值count--;//后綴遞減生成的值是遞減發(fā)生之前的count值--count;//前綴遞減生成的值是遞減發(fā)生之后的count值遞增和遞減變量VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述指定方法聲明語法方法是一個已命名的語句集。類似于C或VisualBasic等編程語言中的函數(shù)或者子程序。是一種根本的、功能強大的編程機制。MicrosoftVisualC#方法的語法格式是:returnTypemethodName(parameterList){//這里添加方法的主體語句}聲明方法return語句如果希望一個方法返回信息,就必須在方法內(nèi)部寫一個return語句。為此,首先要寫下關鍵字return,再寫一個表達式〔它將計算要返回的值〕,因此表達式的類型必須與函數(shù)指定的返回類型相同。return語句應該位于方法的尾部,因為它會造成方法的結束。return語句之后的任何語句都不會執(zhí)行。如果方法的返回類型為void,可以先寫下關鍵字return,然后緊跟一個分號。return語句指定方法調(diào)用語法methodName(parameterList)此處的methodName應與被調(diào)用的方法名一致,而parameterList用于提供將由方法接收的可選信息。必須為每個參數(shù)〔形參〕提供一個參數(shù)值〔實參〕,而且每個參數(shù)值都必須兼容于它對應的形參的類型。每個方法調(diào)用中都必須包含一對圓括號,即使調(diào)用一個無參數(shù)的方法。方法返回的值可以在能夠使用該值的任何地方使用。調(diào)用方法1.聲明方法intaddValues(intleftHandSide,intrightHandSide){//…}2.調(diào)用方法addValues(39,3);或intleftHandSide=39;intrightHandSide=3;addValues(leftHandSide,rightHandSide);調(diào)用方法例如作用域
如果一個變量能在程序中的一個特定位置使用,就說明該變量具有那個位置的作用域,也就是說,一個變量的作用域是指能夠使用該變量的程序區(qū)域。作用域既作用于方法,也作用于變量。一個標識符的作用域是從聲明該標識符的那個位置開始的。
運用作用域定義作用域如:classExample又如:classExample{{voidfirstMethod()voidfirstMethod(){{intmyVar;myVar=42;……}}voidanotherMethod()voidanotherMethod(){{myVar=42;//錯誤,變量越界myVar=42;……}}}intmyVar=0;}VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述bool變量bool變量只能容納兩個值之一:true或者false
如:boolareYouReady;areYouReady=true;Console.WriteLine(areYouReady);//輸出True聲明bool變量布爾操作符關系操作符邏輯操作符布爾操作符操作符含義示例結果(假定age=42)==等于age==100false!=不等于age!=0true操作符含義示例結果(假定age=42)<小于age<21false<=小于或等于age<=18false>大于age>16true>=大于或等于age>=30true操作符含義示例結果&&邏輯與true&&falsefalse||邏輯或true||falsetrue如果想根據(jù)一個布爾表達式的結果選擇執(zhí)行兩個不同的代碼塊,就可以使用語句。理解if語句的語法
if語句的語法格式如下:if(booleanExpression)//此處if表達式必須是布爾表達式,或者是一個布爾變量statement-1;elsestatement-2;
例:intseconds=0;intminutes=0;…if(seconds==59){seconds=0;minutes++;}elseseconds++;if語句if(day==0)dayName=“Sunday”;elseif(day==1)dayName=“Monday”;elseif(day==2)dayName=“Tuesday”;elseif(day==3)dayName=“Wednesday”;elseif(day==4)dayName=“Thursday”;elseif(day==5)dayName=“Friday”;elseif(day==6)dayName=“Saturday”;elsedayName=“unknown”;嵌套if語句使用switch語句理解switch語句的語法switch語句的語法如下:switch(controllingExpression)//只能針對根本數(shù)據(jù)類型使用switch{caseconstantExpression://必須是常量表達式,而不能是計算值statements;break;標簽之間如果沒有額外代碼,那么下面的statements;//的代碼會貫穿兩個casebreak;//break語句是用來阻止貫穿最常見的方式…default:statements;break;}VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述使用復合賦值復合賦值操作符復合賦值操作符含義variable*=number;variable=variable*number;variable/=number;variable=variable/number;variable%=number;variable=variable%number;variable+=number;variable=variable+number;variable-=number;variable=variable-number;復合賦值操作符與簡單賦值操作符具有一樣的優(yōu)先級和右結合性。使用while語句while語句語法while(booleanExpression)statement;表達式必須是一個布爾表達式。布爾表達式必須放在圓括號內(nèi)。假設首次求值時,布爾表達式為false,語句不會執(zhí)行。假設想要在一個while的控制下執(zhí)行兩個或者更多的語句,必須使用大括號將語句分組到一個塊中。例:inti=0;//initializationwhile(i!=10)//BooleanExpression{Console.WriteLine(i);//Statementi++;//updatecontrolvariable}i被稱作哨兵變量使用for語句for語句語法for(initialization;Booleanexpression;updatecontrolvariable)statement;for語句的三個局部都可以省略,但兩個分號不能省略,如果省略布爾表達式,那么就默認為true,for語句會永遠進行下去。例:for(inti=0,j=10;i<=j;i++,j--)Console.WriteLine(i);使用do語句do語句語法對于while和for語句,主體語句計算之前會最先計算bool表達式的值,如結果為false,那主體語句一次都不會運行。而do語句不同,在賦初值之后,首先運行主體語句,之后再求解bool表達式的值,如果結果為false,那么將不再運行主體語句,但主體至少已經(jīng)執(zhí)行了一次。其語法結構為:dostatement;while(booleanExpression);VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述類類程序中的信息需要分類,而設計一個類就是將相關信息放到一個有意義的實體中的過程。一個類容納的信息存儲在字段中,類要提供的功能那么用方法來實現(xiàn)。封裝使用一個類的程序不應關心類的內(nèi)部實際如何工作。程序只需創(chuàng)立類的一個實例,然后調(diào)用類的方法,而不必關心他們具體是如何實現(xiàn)的。
定義并使用類定義類型classCircle{doubleArea()//類中的方法{return3.141592*radius*radius;}doubleradius;//類中的變量稱為“字段”}使用類型circlec;//創(chuàng)立一個circle變量c=newCircle();//初始化變量封裝控制可訪問性使用public和private關鍵字將方法和數(shù)據(jù)封裝在一個類的內(nèi)部之后,類就成為與外界隔絕的一個孤島。類內(nèi)定義的方法和字段只有在類內(nèi)才可以被看見,而外界是看不到它們的。我們雖然可以在程序中創(chuàng)立類的對象,但不能訪問該類的字段,也不都能調(diào)用它的方法。因此,該類目前沒有多大用處。然而,可以使用public和private關鍵字來修改字段或方法的定義,決定它們是否能從外部訪問:一個方法或字段假設只允許從類的內(nèi)部訪問,就說它是私有的。為了聲明一個private方法或字段,只需在它的聲明之前加private關鍵字。一個方法或字段假設既能從類的內(nèi)部訪問,也能從外部訪問,就說它是公共的。為了聲明一個public方法或字段,只需在它的聲明之前添加public關鍵字。
控制可訪問性例:classCircle{publicdoubleArea(){return3.141592*radius*radius;}privatedoubleradius;//如果不加private,那么默認該字段是“私有的”}
使用構造函數(shù)構造函數(shù)使用new關鍵字來創(chuàng)立一個對象時,公共語言運行庫必須使用那個類的定義來構造對象,并調(diào)用構造函數(shù)來執(zhí)行任何必要的初始化。簡言之,構造函數(shù)用來初始化對象。構造函數(shù)〔constructor〕是一種特殊的方法;它與類同名,能獲取參數(shù),但不能返回任何值。例:classCircle{publicCircle()//默認構造函數(shù){this.radius=0.0;}publicCircle(doubleinitialRadius)//重載的構造函數(shù){this.radius=initialRadius;}publicdoubleArea(){return3.141592*radius*radius;}privatedoubleradius;}
使用構造函數(shù)構造函數(shù)被標記為public。如果構造函數(shù)是private的,它就不能在類的外部使用,造成無法從類的外部創(chuàng)立對象?,F(xiàn)在,類已經(jīng)能正常使用,Circlec;c=newCircle();doubleareaOfCircle=c.Area();//此處用圓點表示在c對象上調(diào)用Area方法此處,如果在新建對象圓括號中沒有給定字段的值,那么將使用默認構造函數(shù),如果該括號中給定字段值,那么將使用重載構造函數(shù)。〔參考VisualCsharpStepbyStep\Chapter7\Classes〕理解static方法static是定義一個方法或字段為靜態(tài)方法和靜態(tài)變量的關鍵字,該方法不必創(chuàng)立類的對象就可以使用了,一般通過類名來使用,沒加static的方法那么為實例方法,調(diào)用時是需要創(chuàng)立對象的,不可通過類名來直接使用。在C#中,所有方法都必須在一個類的內(nèi)部聲明,然而,如果使用static標識符來聲明一個方法或字段,就可以使用類名來調(diào)用方法或訪問字段,而不需要先創(chuàng)立類的一個實例。下面展示了真正的Math類的Sqrt方法是如何聲明的:classMath{publicstaticdoubleSqrt(doubled){…}…}那么在實際應用中,如果要調(diào)用Sqrt方法,就可以直接輸入Math.Sqrt(),而不必先創(chuàng)立一個實例Matha;a=newMath();doubled=a.Sqrt();這樣就太麻煩了。〔參考VisualCsharpStepbyStep\Chapter7\Classes_static〕VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述值和引用值類型所有的根本數(shù)據(jù)類型都稱為值類型。當你聲明一個int變量時,編譯器將生成代碼來分配足以容納一個整數(shù)的一個內(nèi)存塊。所有值類型都是在堆棧上創(chuàng)立的。引用類型聲明引用類型的變量時,編譯器不會生成代碼來分配足以容納整個變量的內(nèi)存塊,它只會分配一小片內(nèi)存,其中剛好可以容納包含該變量的另一個內(nèi)存塊的地址〔或者對那個內(nèi)存塊的一個引用〕。所有引用類型都是在堆上創(chuàng)立的??傊?,如果某方法調(diào)用的是一個值類型〔如int〕的變量,那么在方法執(zhí)行后,輸出該變量至控制臺,顯示值仍為方法執(zhí)行前的狀態(tài),因為方法調(diào)用的僅僅是該變量的一個副本,而不是對原始變量進行操作。如果某方法調(diào)用的是一個引用類型〔如類類型〕的變量,該變量作為參數(shù)傳給該方法。那么在該方法中,對對象的內(nèi)容進行的任何修改都會在方法完成之后通過該變量反映出來。(參考VisualCsharpStepbyStep\Chapter8\Parameters)使用ref和out參數(shù)創(chuàng)立ref參數(shù)如果為一個參數(shù)〔形參〕附加了ref關鍵字作為前綴,那么參數(shù)就會成為實參的一個別名,而不再是實參的一個副本。使用ref參數(shù)時,向參數(shù)應用的任何操作,都會同樣應用于實參。要創(chuàng)立ref參數(shù),方法圓括號中的實參〔argument〕與形參〔parameter〕之前都需要加前綴ref。(適用于調(diào)用方法時賦初值)創(chuàng)立out參數(shù)調(diào)用方法之前,參數(shù)應該被初始化,否那么將不能編譯。如果希望由方法本身來初始化參數(shù),而傳遞給方法的只是一個未初始化的實參,可以通過out關鍵字來實現(xiàn)。關鍵字與ref關鍵字非常相似。你可以為一個參數(shù)附加out前綴,使參數(shù)成為實參的一個別名。在向方法傳遞一個out參數(shù)后,必須在方法內(nèi)部對其進行賦值?!策m用于調(diào)用方法時未賦初值,但在定義方法時賦初值?!?/p>
(參考VisualCsharpStepbyStep\Chapter8\Parameters)
System.Object類所有類都是System.Object的一個特殊化類型,可以使用System.Object來創(chuàng)立一個能引用任何引用類型的變量。等價于object關鍵字。裝箱將一個數(shù)據(jù)項從堆棧自動復制到堆的行為稱為裝箱。
如:inti=42;objecto=i;object類型的變量引用值類型,由于值類型存在于堆棧,這里o直接引用i,那么引用的將是堆棧,然而,所有引用都應該引用內(nèi)存堆上的對象。所以實際情況是首先從內(nèi)存堆上劃分出一小片內(nèi)存,然后i中的一個副本將存儲到這片內(nèi)存中,最后讓o中的引用指向這個副本。拆箱
從已裝箱的變量中提取值的過程稱為拆箱。如:inti=42;objecto=i;//裝箱i=(int)o;//拆箱,為了訪問已裝箱的值,需要強制類型轉(zhuǎn)換。
拆箱時指定的類型必須與裝箱的類型完全一致。VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述使用枚舉聲明枚舉enumseason{Spring=2,Summer,Fall,Winter}enum是關鍵字season是枚舉類型的名稱,它的值限于幾個符號名稱,這些符號需要用大括號來界定,中間用逗號隔開。一個枚舉為每個元素都關聯(lián)了一個整數(shù)值。默認情況下,編號從0開始,它代表第一個元素,以后每個元素都遞增了1。使用枚舉
枚舉類型是一種值類型。聲明了一個枚舉類型的變量,只有在賦值之后才能使用。如:Seasoncolorful=Season.Fall;//以枚舉類型作為前綴,對直接量限定Console.WriteLine(colorful);//輸出“Fall”Console.WriteLine((int)colorful);//輸出“4”使用結構類型類定義的是一種引用類型,它總是在堆上創(chuàng)立的。某些時候,類中只包含極少的數(shù)據(jù),因為管理堆兒造成的開銷顯得不合算。在這種情況下,更好的做法是將類型定義成一個結構。由于結構是在堆棧上存儲的,所以能有效地減少內(nèi)存管理開銷。
常用結構類型在以前的練習中,已經(jīng)大量地運用了結構。在C#中,根本數(shù)值類型int,long,float分別是System.Int32,System.Int64和System.Single這三種結構類型的別名。此外,我們所熟悉的bool,byte,double,short等類型都是結構類型。而object,string,char等都是類類型。聲明結構類型和類一樣,結構可以包含它自己的字段、方法和構造函數(shù),區(qū)別在于,結構是值類型,類是引用類型。StructTime{publicTime(inthh,intmm,intss){hours=hh%24;minutes=mm%60;seconds=ss%60;}publicintHours(){returnhours;}privateinthours,minutes,seconds;}(參考VisualCsharpStepbyStep\Chapter9\StructsAndEnums)結構和類的區(qū)別問題結構類是值類型還是引用類型?值類型引用類型它們的實例是存在于堆棧上還是堆上?結構的實例稱為值,存在于堆棧上類的實例稱為對象,存在于堆上可以聲明一個默認構造函數(shù)嗎?不可以可以如果聲明自己的構造函數(shù),編譯器仍然會生成默認構造函數(shù)嗎?會不會如果在自己的構造函數(shù)中不初始化一個字段,編譯器會幫你初始化嗎?不會,必須顯式地初始化一個結構的所有字段會可以在聲明一個實例字段的同時初始化它嗎?不可以,只能在所有構造函數(shù)中初始化所有字段可以VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述數(shù)組數(shù)組是沒有排序的一個元素序列。數(shù)組中的所有元素都具有相同的類型。聲明數(shù)組變量為了聲明一個數(shù)組變量,首先需要寫上它所包含的元素的類型名稱〔不僅根本數(shù)據(jù)類型能作為數(shù)組元素,結構、枚舉、類等類型的數(shù)據(jù)也可以作為數(shù)組的元素〕,后跟一對方括號,最后寫上變量名稱〔最好是復數(shù)形式〕。如:int[]pins;創(chuàng)立數(shù)組實例數(shù)組是引用類型,為了創(chuàng)立一個數(shù)組實例,首先需要寫上new關鍵字,然后寫上元素類型的名稱,然后在方括號中添加要創(chuàng)立的數(shù)組的大小。如:pins=newint[4];使用數(shù)組變量初始化數(shù)組變量創(chuàng)立一個數(shù)組實例時,所有的元素都被初始化為一個默認值〔0,false,null等〕,如果希望將數(shù)組元素初始化為你希望的值,需要加一對大括號來實現(xiàn)。如:int[]pins=newint[4]{9,3,7,2};Time[]schedule={Time(12,30),Time(5,20)};//元素類型為結構類型Time訪問單獨的數(shù)組元素為了訪問一個單獨的數(shù)組元素,你必須提供一個索引來表示自己請求的是哪一個元素。如:intmyPin;myPin=Pins[2];//索引值2訪問的是數(shù)組的第三個元素類似地,可以向一個索引元素賦值,從而更改數(shù)組的內(nèi)容:myPin=1645;pins[2]=myPin;集合類.NetFramework提供了幾個類,它們能夠通過其他特殊方式來收集元素。這些類稱為集合類,它們位于System.Collections命名空間中。根本的集合類能夠以對象的形式接受、容納并返回它們的元素。也就是說集合類的元素類型是object。這意味著在集合中插入一個值時,它總是會進行裝箱,從集合中移除一個值時,那么必須進行一次強制類型轉(zhuǎn)換,從而對它進行拆箱。幾種常用的集合類以及它們引用的方法:ArrayList類:主要用于對一個數(shù)組中的元素進行各種處理。可以使用Remove方法從ArrayList中移除一個元素,可以使用Add方法在ArrayList末尾添加一個元素,可以使用Insert方法在ArrayList中插入一個元素,等等。Queue類:實現(xiàn)了一個先入先出的機制。元素將在隊列的尾部插入〔Enqueue入隊操作〕,并從隊列的頭部移除〔Dequeue出隊操作〕。Stack類:實現(xiàn)了一個后入先出的機制。元素將在堆頂部進入堆棧(Push入棧操作),也從頂部離開堆?!睵op出棧操作〕。Hashtable類:如果我們要訪問數(shù)組中的某個元素,可以通過索引來實現(xiàn),而Hashtable類在內(nèi)部維護者兩個object數(shù)組,一個容納作為映射來源的key,一個容納作為映射目標的value。SortedList類:與Hashtable類非常相似,兩者都允許將key跟value關聯(lián)起來,只是,SortedList中,keys數(shù)組總是排好序的。比較數(shù)組與集合數(shù)組要聲明它容納的元素的類型,而集合不聲明。這是由于集合以object形式來存儲它們的元素的。
一個數(shù)組實例具有固定的大小,不能伸縮,而集合可根據(jù)需要動態(tài)改變大小。
數(shù)組時一種可讀/可寫數(shù)據(jù)結構,沒有方法創(chuàng)立一個只讀數(shù)組。然而,可以使用由集合類提供的ReadOnly方法,以只讀方式來使用集合。該方法將返回一個集合的只讀版本。VisualStudio2005環(huán)境使用變量、操作符和表達式方法和作用域使用決策語句使用復合賦值和循環(huán)語句類和對象值和引用枚舉和結構數(shù)組和集合使用繼承實現(xiàn)屬性VisualC#概述使用繼承繼承在程序設計中,繼承純粹是為了分類效勞的——它是類之間的一種關系。如人類與哺乳動物類就可以聲明一個繼承關系,即人類繼承于哺乳動物,與此同時,鯨類也屬于哺乳動物類,那么鯨類也可以聲明為哺乳動物類的一個繼承。人類與鯨類都有著哺乳動物的一切屬性,但又各自保存了特有的屬性。使用繼承為了聲明一個類是從另一個類繼承的,需要使用以下語法:classDerivedClass:BaseClass{…}這意味著派生類DerivedClass將從基類BaseClass繼承在C#中,System.Object類是所有類的根。所有類都隱式地派生于System.Object類,而所有類都自動繼承了System.Object類的所有特性,包括像ToString這樣的方法。調(diào)用基類構造函數(shù)一個派生類會自動包含來自基類的所有字段。創(chuàng)立對象時,需要對這些字段初始化。因此,派生類的構造函數(shù)必須調(diào)用它的基類的構造函數(shù),通過關鍵字base來調(diào)用。如:classIdentifierToken:Token{publicIdentifierToken(stringname):base(name)//此處調(diào)用的是基類的重載構造函數(shù),假設不{//加此處代碼,那么調(diào)用的是默認構造函數(shù)…}…}virtual方法
本來就用于被覆蓋的方法稱為virtual方法。覆蓋方法的目的是提供同一個方法的不同實現(xiàn)。
例如,ToString方法作為System.Object的一個成員,用來將一個對象轉(zhuǎn)換成它的字符串形式,那它怎樣將一個派生類轉(zhuǎn)換成字符串呢?派生類可能包含任意數(shù)量的字段。實際上,ToString能做的是將一個對象轉(zhuǎn)換成代表其類型的一個字符串。而這種轉(zhuǎn)換沒有多大用途。System.Object中的ToString方法是像下面這樣定義的:namespaceSystem{classObject{publicvirtualstringToString(){…}…}…}override方法假設基類將一個方法聲明為virtual方法,派生類就可以使用override關鍵字來聲明該方法的另一個實現(xiàn)。
不允許使用virtual或override關鍵字來聲明一個private方法,否那么會得到一個編譯時錯誤。兩個方法必須完全一致,也就是說,它們必須具有相同的名稱、相同的參數(shù)類型以及相同的返回類型。兩個方法必須有相同的可訪問性。假設其中一個方法是public的,那么另一個也必須是public的。只能覆蓋一個virtual方法,假設基類方法不是virtual的,那么覆蓋就不能實現(xiàn)。而C#中的方法默認都不是virtual的。假設派生類不用override關鍵字來聲明方法,就不會覆蓋基類方法。換言之,它會成為完全不同的一個方法的實現(xiàn),只是恰巧與基類方法同名。一個override方法將隱式地成為virtual方法,它本身可在未來的一個派生類中被覆蓋。
Protected訪問public和private關鍵字代表著兩種極端的可訪問性:一個類的public字段和方法可由所有人訪問,而一個類的private字段和方法只能由類本身來訪問。
如果需要讓一個基類允許派生類訪問它的局部成員,同時,在不屬于層次結構,即沒有繼承關系的類面前隱藏這些成員,在這種情況下,可以用protected關鍵字來標記成員:派生類可以訪問一個protected基類成員。也就是說,在派生類中,一個protected基類成員相當于public成員。如果類不是一個派生類,就不能訪問protected的類成員。也就是說,在不是派生類的一個類中,一個protected的類成員相當于private成員。創(chuàng)立接口接口允許將一個方法的名稱和它的實現(xiàn)徹底隔絕。接口提供了一個標準,只指出方法的名稱、返回類型和參數(shù)。方法具體是如何實現(xiàn)的,是從繼承接口的類中規(guī)定的。接口語法為了聲明一個接口,需要使用interface關鍵字interfaceIcomparable//接口名以大寫字母I開頭{intComareTo(objectobj);//方法主體替換成一個分號}不允許接口中包含任何字段;不允許在接口中包含任何構造函數(shù);不允許提供一個訪問修飾符,接口中的所有方法都隱式地是public方法;不允許在接口中嵌套任何類型〔enum,struct,class,interface或delegate〕;不允許從struct或者class中繼承一個接口。實現(xiàn)接口
為了實現(xiàn)一個接口,需要聲明一個class或者struct,讓它們從接口繼承,然后實現(xiàn)所有接口方法。
如:要實現(xiàn)Icomparable中的方法,可以通過類來實現(xiàn),classComparable:
IComparable{…intIcomparable.CompareTo(objectobj)//顯式地實現(xiàn)接口的方法{…}}
方法和返回類型完全匹配;
任何參數(shù)完全匹配;
使用接口名作為方法名的前綴,這稱為顯式接口實現(xiàn);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 品質(zhì)培訓提升員工質(zhì)量意識
- 東野圭吾作品分析
- 上證50ETF期權介紹
- 《雖有佳肴》課件
- 七大浪費知識
- 宏觀深度報告:2025年十大“不一致”預期
- 單位管理制度展示選集職員管理篇十篇
- 部編版三年級語文上冊期末試卷(無答案)
- IFRS17對保險行業(yè)影響的深度解析:專題二開啟計量“黑盒子”
- 單位管理制度展示匯編【職員管理】
- 蘋果栽培技術完整版課件
- 交大醫(yī)學院研究生現(xiàn)代免疫學基礎和進展《免疫學原理》考試重點
- 全文解讀改革開放簡史專題解讀
- DB15T 1155-2017 糞渣發(fā)酵牛床墊料質(zhì)量規(guī)范
- (完整版)最新版線束標準
- 一年級計算題連加連減
- 會計專業(yè)工作簡歷表(中級)
- 中國建筑史經(jīng)典題型
- 二年級豎式計算題720道(打印排版)
- 公路工程質(zhì)量檢驗評定標準(交安部分)
- 整式的乘法和因式分解純計算題100道
評論
0/150
提交評論