版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本章教學目標C#語言的基本語法C#語言中的各種數(shù)據(jù)類型C#語言中數(shù)據(jù)類型的相互轉換C#程序控制結構設計C#語言中類的設計及對象的使用C#語言中類的繼承實現(xiàn)13.1C#概述3.1.1C#簡介C#(讀做"Csharp")是微軟公司在2000年7月發(fā)布的一種全新且簡單、安全、面向對象的程序設計語言,是專門為.NET的應用而開發(fā)的語言。它吸收了C++、VisualBasic、Delphi、Java等語言的優(yōu)點,體現(xiàn)了當今最新的程序設計技術的功能和精華。C#繼承了C語言的語法風格,同時又繼承了C++的面向對象特性。不同的是,C#的對象模型已經(jīng)面向Internet進行了重新設計,使用的是.NET框架的類庫;23.1C#概述3.1.2C#的特點自動內存管理交叉語言處理增加安全版本支持完全面向對象33.1C#概述43.1.3C#語法規(guī)則1.語句C#的每條語句都用一個分號來結束,為了程序的可讀性和易維護性,建議一行一語句,C#編譯器自動過濾回車符之類的空白字符。2.代碼塊C#是一個塊結構的編程語言,代碼塊使用“{”和“}”來界定,代碼塊中可以包含任意條語句,也可以根本不包含語句。3.大小寫C#代碼嚴格區(qū)分大小寫,這與其他許多編程語言是不同的,否則將會引起編譯出錯。3.1C#概述3.1.3C#語法規(guī)則4.注釋在C#中,可以使用兩種方式來注釋代碼:單行注釋和多行注釋。單行注釋使用“//”來標記注釋,其后可以編寫任何內容,但一次只能注釋一行語句,使用多行注釋時,C#以“/*”標記注釋的起始位置,以“*/”標記注釋結束。5.變量的命名變量名的第一個字符必須是字母、下劃線(_)或@;其后的字符可以是字母、下劃線、數(shù)字等。不能使用C#中的關鍵字作為變量名,如using、namespace等,因為這些關鍵字對與C#編譯器而言有特定的含義。53.1C#概述63.1.4C#程序編寫步驟1.打開開發(fā)工具visualstudio20103.1C#概述
73.1.4C#程序編寫步驟2.創(chuàng)建項目在菜單項中,點擊文件->新建->項目。3.1C#概述3.1.4C#程序編寫步驟3.選擇模板在左側的模板列表選擇“VirsualC#“,在中間的項目類型中選擇“控制臺應用程序”,在下方“名稱”一欄輸入想要保存項目的名稱“ConsoleApplication1”,在“位置”一欄輸入(選擇)要保存項目文件的文件夾的名稱“C:\Users\ashley\Desktop\c#程序編寫步驟\”83.1C#概述93.1C#概述103.1.4C#程序編寫步驟4.編寫程序在主程序Main方法中輸入相應的編程代碼,如:Console.Write("歡迎使用C#語言!");3.2C#語言的數(shù)據(jù)類型11C#語言中有兩種類型:值類型(value
type)和引用類型(referencetype)。值類型的變量直接包含它們的數(shù)據(jù),而引用類型的變量存儲對它們的數(shù)據(jù)的引用,后者稱為對象。對于引用類型,兩個變量可能引用同一個對象,因此對一個變量的操作可能影響另一個變量所引用的對象。對于值類型,每個變量都有它們自己的數(shù)據(jù)副本(除ref和out參數(shù)變量外),因此對一個變量的操作不可能影響另一個變量。3.2C#語言的數(shù)據(jù)類型
123.2.1值類型值類型直接存儲它的數(shù)據(jù)內容,包括簡單類型、結構和枚舉三種。1.簡單數(shù)據(jù)類型主要包括整數(shù)類型、浮點類型、小數(shù)類型、布爾類型和字符類型
2.結構結構類型是一種值類型,主要用于創(chuàng)建小型的對象以節(jié)省內存。定義一個Point結構的代碼如下:publicstructPoint{publicintX;publicintY;}3.2C#語言的數(shù)據(jù)類型
133.2.1值類型3.枚舉枚舉類型是由一組特定常量構成的一組數(shù)據(jù)結構,是值類型的一種特殊形式,當需要一個由指定常量集合組成的數(shù)據(jù)類型時,使用枚舉類型。枚舉聲明可以顯式地聲明byte、sbyte、short、ushort、int、uint、long或ulong類型作為對應的基礎類型。沒有顯式地聲明基礎類型的枚舉聲明意味著所對應的基礎類型是int。enumweek:long//基礎類型為long型{Monday,Tuesday,Wedesday,Thursday,Friday,Saturday,Sunday}3.2C#語言的數(shù)據(jù)類型
143.2.1值類型在默認情況下,第一個枚舉數(shù)的值為0,后面每個枚舉數(shù)的值依次遞增1,但也可以改變這種默認的情況,強制讓枚舉的成員{直從l或者其他任意值開始。枚舉的成員不能相同,但成員值可以相同。enumWeek:int{Monday=5, //元素值為5Tuesday, //元素值為6Wednesday, //元素值為7Thursday=1, //元素值為1Friday, //元素值為2Saturday, //元素值為3Sunday=5//元素值為5}3.2C#語言的數(shù)據(jù)類型
153.2.2引用類型
引用類型所存儲的實際數(shù)據(jù)是當前引用值的地址,因此引用類型數(shù)據(jù)的值會隨著所指向的值的不同而變化,同一個數(shù)據(jù)也可以有多個引用。C#中引用類型數(shù)據(jù)有4種:類類型(class)、數(shù)組類型(array)、接口類型(interface)和委托類型(delegate)。這四種類型將在后面的內容中講到。3.2C#語言的數(shù)據(jù)類型
163.2.2引用類型
引用類型所存儲的實際數(shù)據(jù)是當前引用值的地址,因此引用類型數(shù)據(jù)的值會隨著所指向的值的不同而變化,同一個數(shù)據(jù)也可以有多個引用。C#中引用類型數(shù)據(jù)有4種:類類型(class)、數(shù)組類型(array)、接口類型(interface)和委托類型(delegate)。這四種類型將在后面的內容中講到。3.2C#語言的數(shù)據(jù)類型
173.2.3裝箱和拆箱2.拆箱轉換和裝箱轉換正好相反,拆箱轉換是指將一個對象類型顯式地轉換成一個值類型,或是將一個接口類型顯式地轉換成一個執(zhí)行該接口的值類型。拆箱的過程分為兩步:首先檢查這個對象實例,看它是否為給定的值類型的裝箱值。然后把這個實例的值拷貝給值類型的變量。例如:inti=10;objectobj=i;intj=(int)obj;3.3常量、變量和運算符183.3.1常量常量就是其值固定不變的量,從數(shù)據(jù)類型角度來看,常量的類型可以是任何一種值類型或引用類型常量修飾符可以是new、public、protected、internal、private或protectedinternal。常量的數(shù)據(jù)類型必須是以下類型之一:sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,decimal,bool,string,枚舉類型(enum-type)或引用類型(reference-type)。例如:publicconstdoubleX=1.0,Y=2.0,Z=3.0;3.3常量、變量和運算符193.3.2變量在使用過程中,值可以改變的量稱為變量。使用變量的一條重要原則是:變量必須先定義后使用。變量可以在定義時被賦值,也可以在定義時不被賦值。一個定義時被賦值的變量很好地定義了一個初始值,一個定義時不被賦值的變量沒有初始值。1.變量的命名2.變量的類型3.靜態(tài)變量4.非靜態(tài)變量5.局部變量3.4數(shù)組203.4.1數(shù)組的概念在進行批量處理數(shù)據(jù)的時候,我們要用到數(shù)組。數(shù)組是一組類型相同的有序數(shù)據(jù)。數(shù)組按照數(shù)組名、數(shù)據(jù)元素的類型和維數(shù)來進行描述。C#中提供的System.Array類是所有數(shù)組類型的基類。3.4.2數(shù)組的定義
在C#中,數(shù)組分為:一維數(shù)組、多維數(shù)組(矩形數(shù)組)和數(shù)組的數(shù)組(交錯數(shù)組)。1.一維數(shù)組int[]arr=newint[5];//長度為5的int型數(shù)組2.多維數(shù)組int[,]a2=newint[,]{{1,2,3},{4,5,6}};3.交錯數(shù)組int[][]c=newint[][]{newint[]{1,2},newint[]{3,4,5}};3.4數(shù)組213.4.3數(shù)組的使用數(shù)組必須在初始化之后才可以使用int[]Array=newint[3];Array[0]=2;Array[1]=3;Array[2]=4;int[]Array1=newint[3]{2,3,4};//數(shù)組聲明及初始化int[]Array2=newint[]{2,3,4};//數(shù)組聲明及初始化3.4數(shù)組3.4.4數(shù)組的操作通過循環(huán)的方式遍歷數(shù)組中的元素,例如:int[]arr=newint[5];for(inti=0;i<arr.Length;i++){arr[i]=i*i;}for(inti=0;i<arr.Length;i++){Console.WriteLine("arr[{0}]={1}",i,arr[i]);}3.5C#程序控制結構C#程序執(zhí)行方式并非都是直線順序結構,還有選擇結構和循環(huán)結構。而選擇結構和循環(huán)結構需要流程控制語句。流程控制語句主要有選擇語句和循環(huán)語句。3.5.1選擇結構設計1.if語句if語句是最常用的選擇語句,它根據(jù)布爾表達式的值來判斷是否執(zhí)行后面的內嵌語句,語法形式為:if(布爾表達式)嵌入語句或if(布爾表達式)嵌入語句else嵌入語句3.5C#程序控制結構C#程序執(zhí)行方式并非都是直線順序結構,還有選擇結構和循環(huán)結構。而選擇結構和循環(huán)結構需要流程控制語句。流程控制語句主要有選擇語句和循環(huán)語句。3.5.1選擇結構設計1.if語句if語句是最常用的選擇語句,它根據(jù)布爾表達式的值來判斷是否執(zhí)行后面的內嵌語句,語法形式為:if(布爾表達式)嵌入語句或if(布爾表達式)嵌入語句else嵌入語句3.5C#程序控制結構3.5.2循環(huán)結構設計循環(huán)語句可以實現(xiàn)一個程序模塊的重復執(zhí)行。它對于我們簡化程序,更好地組織算法有著重要的意義。C#為我們提供了四種循環(huán)語句,分別適用于不同的情形。while語句while語句有條件地將內嵌語句執(zhí)行0遍或若干遍。語句的格式為:while(布爾表達式)嵌入語句do-while語句do-while語句與while語句不同的是:它首先執(zhí)行嵌入語句,然后判斷布爾表達式的值是否為true。其語法形式為:do{嵌入語句}while(布爾表達式)3.5C#程序控制結構
3.for語句for語句是C#中使用頻率最高的循環(huán)語句。在事先知道循環(huán)次數(shù)的情況下,使用for語句是比較方便的。for語句的格式為:for(初始化;循環(huán)控制條件;循環(huán)控制)嵌入語句4.foreach語句foreach語句表示收集一個集合中的各元素,并針對各個元素執(zhí)行內嵌語句。語句的格式為:foreach(類型標識符in表達式)嵌入語句3.6類、對象和方法
3.6.1類的概念類是面向對象的程序設計的基本構成模塊。從定義上講,類是一種數(shù)據(jù)結構,這種數(shù)據(jù)結構可能包含數(shù)據(jù)成員,函數(shù)成員以及其它的嵌套類型。其中數(shù)據(jù)成員類型有常量域和事件,函數(shù)成員類型有方法、屬性、索引指示器、操作符、構造函數(shù)和析構函數(shù)。在C#中,類的聲明格式如下:屬性集類修飾符class類名繼承方式基類名{類體}其中,關鍵字class、類名和類體是必需項,其他項是可選項。類的修飾符可以是以下幾種之一或者是它們的組合在類的聲明中同一修飾符不允許出現(xiàn)多次。3.6類、對象和方法
1.類的成員類的成員可以分為兩大類:類本身所聲明的以及從基類中繼承而來的。類的成員有以下類型:成員常量 代表與類相關聯(lián)的常量值類中的變量(字段)成員方法 復雜執(zhí)行類中的計算和其它操作屬性 用于定義類中的值 并對它們進行讀寫事件 用于說明發(fā)生了什么事情索引指示器 允許像使用數(shù)組那樣為類添加路徑列表操作符 定義類中特有的操作構造函數(shù)和析構函數(shù)2.靜態(tài)成員和非靜態(tài)成員若將類中的某個成員聲明為static該成員稱為靜態(tài)成員。類中的成員要么是靜態(tài),要么是非靜態(tài)的。一般說來,靜態(tài)成員是屬于類所有的,非靜態(tài)成員則屬于類的實例對象。3.6類、對象和方法
3.6.1類的概念3.成員常量關鍵字const用于聲明常量,后跟數(shù)據(jù)類型的聲明。類的常量可以加上以下修飾符newpublicprotectedinternalprivate3.6類、對象和方法
3.6.2對象的生成構造函數(shù)用于執(zhí)行類的實例的初始化(對象的生成),每個類都有構造函數(shù),即使我們沒有聲明它,編譯器也會自動地為我們提供一個默認的構造函數(shù)。在生成對象的時候,系統(tǒng)將最先執(zhí)行構造函數(shù)中的語句。實際上,任何構造函數(shù)的執(zhí)行都隱式地調用了系統(tǒng)提供默認的構造函數(shù)base()。使用構造函數(shù)請注意以下幾個問題:一個類的構造函數(shù)通常與類名相同構造函數(shù)不聲明返回類型一般地,構造函數(shù)總是public類型的,如果是private類型的,表明類不能被實例化,這通常用于只含有靜態(tài)成員的類。在構造函數(shù)中不要做對類的實例進行初始化以外的事情,也不要嘗試顯式地調用構造函數(shù)。3.6類、對象和方法
3.6.3函數(shù)與方法方法是類中用于執(zhí)行計算或其它行為的成員。方法的聲明格式為:方法修飾符返回類型方法名(形參列表){方法體}方法的修飾符可以是:newpublicprotectedinternalprivatestaticvirtualsealedoverrideabstractextern3.6類、對象和方法
3.6.3函數(shù)與方法1.返回值方法的返回值的類型可以是合法的C#的數(shù)據(jù)類型。C#在方法的執(zhí)行部分通過return語句得到返回值。2.方法中的參數(shù)C#中方法的參數(shù)有四種類型值參數(shù) 不含任何修飾符引用型參數(shù) 以ref修飾符聲明輸出參數(shù) 以out修飾符聲明數(shù)組型參數(shù) 以params修飾符聲明(1)值參數(shù)(2)引用型參數(shù)(3)輸出參數(shù)(4)數(shù)組型參數(shù)(5)靜態(tài)和非靜態(tài)的方法3.6類、對象和方法
3.6.4類的繼承C#中派生類從它的直接基類中繼承成員、方法、變量、屬性、事件和索引指示器。除了構造函數(shù)和析構函數(shù),派生類隱式地繼承了直接基類的所有成員。C#中的繼承符合下列規(guī)則:繼承是可傳遞的。如果C從B中派生B又從A中派生,那么C不僅繼承了B中聲明的成員,同樣也繼承了A中的成員。Object類作為所有類的基類派生類應當是對基類的擴展 派生類可以添加新的成員。但不能除去已經(jīng)繼承的成員的定義構造函數(shù)和析構函數(shù)不能被繼承,除此以外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這并不因為這派生類刪除了這些成員,只是不能再訪問這些成員類可以定義虛方法,虛屬性以及虛索引指示器。它的派生類能夠重載這些成員,從而實現(xiàn)類可以展示出多態(tài)性3.6類、對象和方法
3.6.4類的繼承1.覆蓋上面提到類的成員聲明中可以聲明與繼承而來的成員同名的成員,這時我們稱派生類的成員覆蓋hide了基類的成員。這種情況下編譯器不會報告錯誤,但會給出一個警告。對派生類的成員使用new關鍵字可以關閉這個警告。2.虛方法當類中的方法聲明前加上了virtual修飾符,我們稱之為虛方法,反之為非虛。使用了virtual修飾符后,不允許再有static,abstract或override修飾符。對于非虛的方法,無論被其所在類的實例調用,還是被這個類的派生類的實例調用,方法的執(zhí)行方式不變。而對于虛方法,它的執(zhí)行方式可以被派生類改變,這種改變是通過方法的重載來實現(xiàn)的。3.6類、對象和方法
3.6.5委托和事件委托是一個類型安全的對象,它指向程序中另一個以后會被調用的方法(或多個方法)。通俗的說,委托是一個可以引用方法的對象,當創(chuàng)建一個委托,也就創(chuàng)建一個引用方法的對象,進而就可以調用那個方法,即委托可以調用它所指的方法。1.定義委托類型訪問修飾符delegate返回類型委托名(形參)2.聲明委托對象委托名委托實例名;3.創(chuàng)建委托對象(確定與哪些方法進行綁定)委托實例名=new委托名(某個類的方法)4.使用委托調用方法委托實例名(實參)3.6類、對象和方法
委托注意事項:(1)委托和方法必須具有相同的參數(shù)。(2)委托可以調用多個方法,即一個委托對象可以維護一個可調用方法的列表而不是單獨的一個方法,稱為多路廣播(多播)。(3)使用+=和-=運算實現(xiàn)方法的增加和減少。publicdelegateintCall(intnum1,intnum2);//第一步:定義委托類型classSimpleMath{publicintMultiply(intnum1,intnum2){returnnum1*num2;}publicintDivide(intnum1,intnum2){returnnum1/num2;}}3.6類、對象和方法
classTest{staticvoidMain(string[]args){CallobjCall;//第二步:聲明委托對象SimpleMathobjMath=newSimpleMath();objCall=newCall(objMath.Multiply);//第三步:創(chuàng)建委托對象,將方法與委托關聯(lián)起來CallobjCall1=newCall(objMath.Divide);objCall+=objCall1;//向委托增加一個方法intresult=objCall(7,9);//調用委托實例,先執(zhí)objMath.Multiply,然后執(zhí)行objMath.DivideConsole.WriteLine("結果為{0}",result);}}程序的輸出為:結果為03.6類、對象和方法
修飾符event委托類型事件名;向類中添加事件需要使用event關鍵字,并提供委托類型和事件名稱。例如:publicclassEventSource{publicdelegatevoidTestEventDelegate(objectsender,System.EventArgse);publiceventTestEventDelegateTestEvent;privatevoidRaiseTestEvent(){/*...*/}}3.6類、對象和方法
要接收某個事件的類可以創(chuàng)建一個方法來接收該事件,然后向類事件自身添加該方法的一個委托。這個過程稱為“訂閱事件”。首先,接收類必須具有與事件自身具有相同簽名(如委托簽名)的方法。然后,該方法(稱為事件處理程序)可以采取適當?shù)牟僮鱽眄憫撌录?。例如:publicclassEventReceiver{publicvoidReceiveTestEvent(objectsender,System.EventArgse){Console.Write("Eventreceivedfrom");Console.WriteLine(sender.ToString());}}
3.6類、對象和方法要接收某個事件的類可以創(chuàng)建一個方法來接收該事件,然后向類事件自身添加該方法的一個委托。這個過程稱為“訂閱事件”。首先,接收類必須具有與事件自身具有相同簽名(如委托簽名)的方法。然后,該方法(稱為事件處理程序)可以采取適當?shù)牟僮鱽眄憫撌录?。例如:publicclassEventReceiver{publicvoidReceiveTestEvent(objectsender,System.EventArgse){Console.Write("Eventreceivedfrom");Console.WriteLine(sender.ToString());}}40
3.6類、對象和方法若要取消訂閱事件,接收器可以使用減法賦值運算符(-=)從源對象的事件中移除事件處理程序的委托。例如:publicvoidUnSubscribe(EventSourcesource){TestEventDelegatetemp=newTestEventDelegate(ReceiveTestEvent);source.TestEvent-=temp;}41
3.6類、對象和方法3.6.6字符串操作字符串類型是引用類型,字符串是使用string關鍵字聲明的、由一個或多個字符組成的一組字符。它有兩種表達方式:用雙引號引起來;用@引起來,它可以把字符串中的特殊字的特殊性去掉,字符串中的所有字符均被認為是普通字符。例如:stringmyname=“”;stringfilepath=@”c:\windows”;//“\w”不是轉義字符下面介紹幾種常見的字符串操作。(1)字符串中字符訪問(s[i])strings="ABCD";Console.WriteLine(s[0]);//輸出"A";Console.WriteLine(s.Length);//輸出442
3.6類、對象和方法(2)字符串轉換為字符數(shù)組(ToCharArray)strings="ABCD";char[]arr=s.ToCharArray();//把字符串轉換為字符數(shù)組{'A','B','C','D'}Console.WriteLine(arr[0]);//輸出數(shù)組的第一個元素,輸出"A"(3)截取子串(Substring)strings="ABCD";Console.WriteLine(s.Substring(1));//從第2位開始(索引從0開始)截取一直到字符串結束,輸出"BCD"Console.WriteLine(s.Substring(1,2));//從第2位開始截取2位,輸出"BC"43
3.6類、對象和方法(4)匹配索引(IndexOf)strings="ABCABCD";Console.WriteLine(s.IndexOf('A'));//從字符串頭部開始搜索第一個匹配字符A的位置索引,輸出"0"Console.WriteLine(s.IndexOf("BCD"));//從字符串頭部開始搜索第一個匹配字符串BCD的位置,輸出"4"Console.WriteLine(s.LastIndexOf('C'));//從字符串尾部開始搜索第一個匹配字Console.WriteLine(s.LastIndexOf("AB"));//從字符串尾部開始搜索第一個匹配字符串BCD的位置,輸出"3"Console.WriteLine(s.IndexOf('E'));//從字符串頭部開始搜索第一個匹配字符串E的位置,沒有匹配輸出"-1";Console.WriteLine(s.Contains("ABCD"));//判斷字符串中是否存在另一個字符串"ABCD",輸出true44
3.6類、對象和方法(5)大小寫轉換(ToUpper和ToLower)strings="aBcD";Console.WriteLine(s.ToLower());//轉化為小寫,輸出"abcd"Console.WriteLine(s.ToUpper());//轉化為大寫,輸出"ABCD"(6)截頭去尾(Trim)strings
="__AB__CD__";
Console.WriteLine(s.Trim('_'));
//
移除字符串中頭部和尾部的'_'字符,輸出"AB__CD"
Console.WriteLine(s.TrimStart('_'));
//
移除字符串中頭部的'_'字符,輸出"AB__CD__"
Console.WriteLine(s.TrimEnd('_'));
//
移除字符串中尾部的'_'字符,輸出"__AB__CD"
Console.WriteLine(s.Replace("_",
""));
//
把字符串中的"_"替換為空字符串,輸出"ABCD"45
3.6類、對象和方法(7)替換字符(串)(Replace)strings
="A_B_C_D";
Console.WriteLine(s.Replace('_',
'-'));
//
把字符串中的'_'字符替換為'-',輸出"A-B-C-D"(8)分割為字符串數(shù)組(Split)
strings
="AA,BB,CC,DD";
string[]arr1
=
s.Split(',');
//
以','字符對字符串進行分割,返回字符串數(shù)組
Console.WriteLine(arr1[0]);
//
輸出"AA"
Console.WriteLine(arr1[1]);
//
輸出"BB"
Console.WriteLine(arr1[2]);
//
輸出"CC"
Console.WriteLine(arr1[3]);
//
輸出"DD"46
3.6類、對象和方法9)格式化(靜態(tài)方法Format)Console.WriteLine(string.Format("{0}+{1}={2}",
1,
2,
1+2));Console.WriteLine(string.Format("{0}/{1}={2:0.000}",
1,
3,
1.00/3.00));Console.WriteLine(string.Format("{0:yyyy年MM月dd日}",DateTime.Now));
47
3.6類、對象和方法(10)連接成一個字符串(+運算、靜態(tài)方法Concat、靜態(tài)方法Join和實例方法StringBuilder.Append)strings
="A,B,C,D";strings1=”,E,F”;strings2=s+s1;Console.WriteLine(s2);
//輸出“A,B,C,D,E,F”string[]arr3
=
s.Split(',');
//
arr={"A","B","C","D"}Console.WriteLine(string.Concat(arr3));
//
將一個字符串數(shù)組連接成一個字符串,輸出"ABCD"
Console.WriteLine(string.Join(",",arr3));
//
以","作為分割符號將一個字符串數(shù)組連接成一個字符串,輸出"A,B,C,D"
StringBuildersb
=new
StringBuilder();
//
聲明一個字符串構造器實例sb.Append("A");
//
使用字符串構造器連接字符串能獲得更高的性能
sb.Append('B');
Console.WriteLine(sb.ToString());//
輸出"AB"48
3.6類、對象和方法
493.6.7日期和時間使用DateTime結構創(chuàng)建、表示日期和時間。使用Now屬性獲取系統(tǒng)日期。例如:DateTimeBirthday=newDateTime(2012,8,14);DateTimetoday=DateTime.Now;日期類型可以使用Year、Month、Day、DayOfWeek、Hour、Minute、Second等屬性訪問日期中的年份、月份、日、星期、小時、分鐘和秒。例如:intmonth=Birthday.Month;inthour=today.Hour;3.6類、對象和方法3.6.8數(shù)據(jù)轉換在編程的過程中,需要對不同類型的數(shù)據(jù)進行相互轉換,在C#中提供了5中常用的轉換方式。1.隱式轉換當對簡單的值類型進行轉換時,如果是按照Byte,short,int,long,float,double從左到右(從短到長)進行轉換的時候,可以直接進行轉換(隱式轉換),不用做任何說明。例如:inta=10;longb=a;Console.Write("b的值為:"+b);3.6類、對象和方法2.顯示轉換對值類型進行轉換時,從長字節(jié)轉換成短字節(jié),直接轉換的話,編譯器會提示“無法將類型*轉換為類型*,存在一個顯示轉換”,這時需要進行強制轉換(顯示轉換)。例如:longa=10;intb=(int)a;Console.Write("b的值為:"+b);
3.6類、對象和方法3.toString()轉換當把值類型轉換成字符串類型時,可以直接調用值類型的方法toString()進行轉換。例如:inta=256;stringb=a.ToString();Console.Write("b的值為:"+b);3.6類、對象和方法4.parse方法值類型都有parse方法,可以將字符串轉換為對應的數(shù)據(jù)類型,例如:inta=256;stringb="256";if(int.Parse(b)==a){Console.Write("a和b的值相等!");}3.6類、對象和方法5.Convert類Convert類有很多的轉換數(shù)據(jù)類型的方法,它將繼承自Object類型的對象轉換為指定的類型。例如:stringt=“28.9”;doublevalue=Convert.ToDouble(t);經(jīng)典案例一、案例功能說明本章典型案例,主要是實現(xiàn)一個模擬銀行ATM機操作的控制臺程序。讓開發(fā)者掌握C#程序的基本語法、類型、類的設計及對象的使用等內容,加深對C#程序編寫的認識。二、案例要求(1)編寫Accounter銀行賬戶類,具有賬戶賬戶和賬戶金額的屬性,開戶、存錢、取錢等方法。(2)通過控制臺程序實現(xiàn)對Accounter類的對象屬性及方法的訪問。三、操作和實現(xiàn)步驟(1)建立一個工程文件夾為模擬銀行ATM機操作。(2)啟動VS2010,選擇新建項目。選擇建立控制臺應用程序。添加一個名為ConsoleApplication1的項目,項目位置在模擬銀行ATM機操作文件夾中,如下圖所示。55經(jīng)典案例56經(jīng)典案例57(3)項目新建成功后,打開“解決方案資源管理器”,可以看到解決方案中包括了剛才生成的控制臺程序的項目,選擇項中的Program.cs文件,雙擊打開,可以看到VS2010已經(jīng)幫我們編寫了一部分程序,如下圖所示。經(jīng)典案例58(4)在解決方案資源管理器中選擇項目,【右鍵】->【添加】->【新建項】。(5)在彈出的界面中,選擇“類”,并把名稱改為“Accounter.cs”。如下圖所示。經(jīng)典案例59(6)在“解決方案資源管理器”中,雙擊“Accounter.cs”,編寫類的代碼,代碼如下所示。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceConsoleApplication1//類的命名空間,在訪問類時,可以使用類的命名空間.類名的方式{classAccounter//類名{privatestringnumber;//字段成員,表示賬戶賬號信息publicstringNumber//屬性成員,對number字段進行了封裝,用public修飾符表示可以對外公開訪問{get{returnnumber;}//獲取屬性值的get訪問器set{number=value;}//設置屬性值的set訪問器}privatedecimalmoney;//字段成員,表示賬戶金額信息publicdecimalMoney//屬性成員,對money字段進行了封裝{get{returnmoney;}set{money=value;}}經(jīng)典案例60publicAccounter(stringn,decimalm)//類的構造函數(shù),帶有參數(shù),可以對2個字段成員進行值的初始化{number=n;money=m;}publicvoidSave(decimalm)//存錢的方法,方法沒有返回值{money+=m;//實現(xiàn)對money字段的加操作}//實現(xiàn)對money字段的累加計算publicboolDraw(decimalm)//取錢的方法{if(money>=m)//判斷取錢的金額是否超過賬戶的金額{money-=m;//實現(xiàn)對money字段的減操作returntrue;//返回true表示操作成功}else{returnfalse;//返回true表示操作失敗,余額不足}}
}}經(jīng)典案例61(7)在“解決方案資源管理器”中,雙擊“Program.cs”,編寫Main方法的代碼,代碼如下所示。staticvoidMain(string[]args){Console.WriteLine("歡迎光臨銀行ATM機!");//屏幕輸出歡迎信息Console.WriteLine("賬戶未創(chuàng)建,請先創(chuàng)建賬戶");Console.WriteLine("請輸入你要創(chuàng)建的賬戶的賬號:");stringnumber=Console.ReadLine();//讀取用戶輸入的賬戶Console.WriteLine("請輸入你要創(chuàng)建的賬戶的初始金額:");decimalinitmoney=decimal.Parse(Console.ReadLine());//讀取用戶輸入的初始金額,并進行類型轉換Accounteraccounter=newAccounter(number,initmoney);//生成Accounter類的對象,為對象的2個字段進行初始化Console.WriteLine("賬戶創(chuàng)建成功!");經(jīng)典案例62while(true){Console.WriteLine("請選擇你要的操作1:存錢2:取錢3:退出");//屏幕輸出選擇信息,提示用戶選擇stringa=Console.ReadLine();if(a=="3")//用戶選擇了退出break;//break結束while循環(huán)switch(a){case"1"://用戶選擇了存錢Console.WriteLine("請輸入你要存錢的金額:");decimalm1=decimal.Parse(Console.ReadLine());//獲取用戶輸入的存款金額并轉換為decimal類型accounter.Save(m1);//調用對象的方法,進行存款Console.WriteLine("存錢成功,當前賬戶金額為:{0}",accounter.Money.ToString());//顯示賬戶的余額信息break;case"2"://用戶選擇了取錢Console.WriteLine("請輸入你要取錢的金額:");經(jīng)典案例63decimalm2=decimal.Parse(Console.ReadLine());if(accounter.Draw(m2))//調用對象的方法,進行取款{Console.WriteLine("取錢成功,當前賬戶金額為:{0}",accounter.Money.ToString());//取錢成功,顯示賬戶的余額信息}else{Console.WriteLine("取錢失敗,當前賬戶余額不足!");//取錢成功,顯示提示信息}break;default:break;//用戶其它的選擇不執(zhí)行任何操作}}}經(jīng)典案例64
(8)運行程序,出現(xiàn)程序的運行界面,如下圖所示。經(jīng)典案例65
(9)按照程序屏幕的提示,進行操作,可以看到程序的運行結果。經(jīng)典案例66
(9)按照程序屏幕的提示,進行操作,可以看到程序的運行結果。作業(yè)要求67(1)請學生按照上述操作步驟,制作一個完全相同的控制臺程序,對程序進行運行及測試,學習C#程序的基本語法和編寫過程。(2)請學生以上述操作步驟為參照,增加Accounter類的查詢賬戶信息的Query方法,并能夠在Program.cs文件的Main函數(shù)進行調用。上機實訓3-168C#程序編寫練習一、實驗目的1)熟悉C#的基本語法和基本類型。2)掌握C#中程序編寫的一般方式。3)掌握C#中類的設計和對象的使用。4)能夠通過控制臺程序驗證程序編寫的正確性。二、實驗儀器、設備及材料PC機一臺,安裝WindowsXP、VS2010、SQLServer2008軟件。三、實驗內容及要求1、實驗內容編寫一個控制臺程序,實現(xiàn)對于學生基本信息的查詢。2、實驗分析1)項目中可以編寫一個Student類,用于對學生的基本信息進行封裝,方面信息的訪問,Student類的代碼可以參考如下。上機實訓3-169classStude
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省六安市2023-2024年度滬科版數(shù)學九年級上學期綜合測試卷
- 2024-2030年中國大米行業(yè)營銷戰(zhàn)略與供應情況預測報告
- 2024-2030年中國垃圾中轉設備行業(yè)發(fā)展分析及投資戰(zhàn)略研究報告版
- 2024-2030年中國商業(yè)地產(chǎn)行業(yè)發(fā)展前景預測及投融資策略分析報告
- 2024-2030年中國衛(wèi)浴墊產(chǎn)業(yè)未來發(fā)展趨勢及投資策略分析報告
- 2024年版:呂桃與配偶解除婚姻關系協(xié)議
- 2024年施工安全協(xié)議書編制指南及審查標準2篇
- 2024年版離婚合同規(guī)范格式版B版
- 2024年個人信用評估與貸款審核委托協(xié)議3篇
- 2024年版:市場推廣專員合同3篇
- 西安市藝術教育示范校評估驗收標準
- 雞西730煤機電器圖冊
- 電力電子-降壓斬波電路設計
- 鄉(xiāng)鎮(zhèn)迎接國家第三方評估核查工作方案
- 小學音樂課件-選唱歌曲《旋轉的童年》-西師大版(共8張PPT)ppt課件
- 軸類零件加工工藝設計畢業(yè)論文.doc
- 60Si2Mn汽車板簧熱處理工藝設計
- 信息工建學院項目項目實施方案
- 《背向大地的愛》閱讀練習及答案
- 色彩構成7色彩秩序
- 創(chuàng)新管理出亮點安全生產(chǎn)見成效
評論
0/150
提交評論