第三、四章 C#面向對象編程
《第三、四章 C#面向對象編程》由會員分享,可在線閱讀,更多相關《第三、四章 C#面向對象編程(292頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、信息與軟件工程信息與軟件工程 系系 軟軟 件件 教教 研研 室室C#程程 序序 設設 計計案例案例2 2 教學管理軟件教學管理軟件 案例簡介案例簡介C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室需求概述需求概述 在學校教務管理系統(tǒng)中,有三種用戶,一種是系在學校教務管理系統(tǒng)中,有三種用戶,一種是系統(tǒng)管理員,一種是學生,一種是教師,編寫統(tǒng)管理員,一種是學生,一種是教師,編寫C#C#類實類實現(xiàn)該繼承關系。系統(tǒng)管理員現(xiàn)該繼承關系。系統(tǒng)管理員/學生學生/教師都有用戶名教師都有用戶名和密碼屬性,并都有和密碼屬性,并都有LoginLogin和顯示自身信息的方法,和
2、顯示自身信息的方法,另外,學生擁有班級和成績兩個特殊屬性以及查詢另外,學生擁有班級和成績兩個特殊屬性以及查詢成績這一方法,教師擁有部門和工資兩個特殊屬性成績這一方法,教師擁有部門和工資兩個特殊屬性以及查詢工資這一方法,系統(tǒng)管理員可以添加學生以及查詢工資這一方法,系統(tǒng)管理員可以添加學生和教師信息。由于教師和學生個人信息不同,所以和教師信息。由于教師和學生個人信息不同,所以學生和教師重載基類的學生和教師重載基類的DisplayInfoDisplayInfo方法。方法。2C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室需求分析需求分析 對于此類問題,首先應該
3、抽象三類用戶共有的特對于此類問題,首先應該抽象三類用戶共有的特征,在此基礎上,再派生普通類型的用戶,類關系征,在此基礎上,再派生普通類型的用戶,類關系圖如圖圖如圖1所示。所示。圖1 繼承關系3C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室實現(xiàn)過程實現(xiàn)過程1 1、創(chuàng)建控制臺應用程序,命名為、創(chuàng)建控制臺應用程序,命名為“SchoolManagementSchoolManagement”。2 2、創(chuàng)建名為、創(chuàng)建名為UserUser的基類,基類定義了的基類,基類定義了userNameuserName和和passwordpassword屬屬性,以及性,以及Lo
4、ginLogin和和DisplayInfoDisplayInfo方法。方法。3 3、創(chuàng)建名為創(chuàng)建名為“StudentStudent”的派生類,具備班級和成績兩個特殊的派生類,具備班級和成績兩個特殊屬性,以及查詢成績的特殊方法屬性,以及查詢成績的特殊方法,覆蓋基類的顯示個人信息覆蓋基類的顯示個人信息方法。方法。4 4、創(chuàng)建名為創(chuàng)建名為“TeacherTeacher”的派生類,具備部門和工資兩個特殊的派生類,具備部門和工資兩個特殊屬性,以及查詢工資的特殊方法屬性,以及查詢工資的特殊方法,覆蓋基類的顯示個人信息覆蓋基類的顯示個人信息方法。方法。5 5、創(chuàng)建名為創(chuàng)建名為“SysManagerSysMa
5、nager”的派生類,具備插入學生信息和的派生類,具備插入學生信息和插入教師信息兩個方法。插入教師信息兩個方法。6 6、在、在“Program.csProgram.cs”的的“MainMain”方法中調(diào)用以上類,測試。方法中調(diào)用以上類,測試。4C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室結果演示結果演示 5C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室主要知識點主要知識點類的聲明、類的成員、構造函數(shù)和析構函數(shù)類的聲明、類的成員、構造函數(shù)和析構函數(shù)方法的聲明、方法的參數(shù)、靜態(tài)方法與實例方法、方法的覆方法的聲
6、明、方法的參數(shù)、靜態(tài)方法與實例方法、方法的覆蓋與重載蓋與重載屬性屬性類的繼承與多態(tài)類的繼承與多態(tài)接口接口6信息與軟件工程信息與軟件工程 系系 軟軟 件件 教教 研研 室室C#程程 序序 設設 計計案例案例2 2 教學管理軟件教學管理軟件 知識點詳解知識點詳解信息與軟件工程信息與軟件工程 系系 軟軟 件件 教教 研研 室室C#程程 序序 設設 計計面向對象編程思想面向對象編程思想 C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室本章要點本章要點理解面向對象的重要性理解面向對象的重要性掌握類的概念掌握類的概念掌握對象的概念掌握對象的概念掌握類的組成掌握類的
7、組成掌握封裝的概念掌握封裝的概念掌握變量的作用域掌握變量的作用域9C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室面向對象概述問題引入問題引入大型軟件開發(fā):類似騰訊大型軟件開發(fā):類似騰訊QQ的聊天軟件的聊天軟件 復復 雜雜 的的 代代 碼碼 功功 能能 如如 果果 都都 集集 中中 在在 一一 個個Program.cs文文件件中中是是不不現(xiàn)現(xiàn)實實的的,需需要要對對代代碼碼進進行行組組織織,將將功功能能相相近近的的代代碼碼分分類類整整合合,從從而而便便于代碼的管理和團隊開發(fā)于代碼的管理和團隊開發(fā)。10C#程程 序序 設設 計計計計 算算 機機 科科 學學
8、 系系 軟軟 件件 教教 研研 室室面向對象概述問題引入問題引入在在C#程程序序設設計計中中,按按照照問問題題模模型型特特征征以以及及施施加加在在該該模模型型上上的的操操作作,分分類類管管理理代代碼碼的的編編程程模模式式稱稱為為面面向向對對象象的的程程序序設設計計方方法法(OOP)。在在需需求求分分析析和和系系統(tǒng)統(tǒng)設設計計領領域域,還還有有面面向向對對象象的的分分析析(OOA)和和面面向向對對象象的的設設計計(OOD)等等。面面向向對對象象的的軟軟件件開開發(fā)發(fā)模模式式,是是解解決決復復雜雜且且多多變變的的客客觀觀問問題題的的有有效手段,也是從事軟件開發(fā)工作的一項必備能力。效手段,也是從事軟件開
9、發(fā)工作的一項必備能力。11C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室面向對象概述面向對象程序設計面向對象程序設計在計算機世界中,將事物的特征稱為屬性,將事在計算機世界中,將事物的特征稱為屬性,將事物的行為或施加在事物上的操作稱為方法,這種物的行為或施加在事物上的操作稱為方法,這種對求解問題模型抽象其屬性和方法,分類編寫代對求解問題模型抽象其屬性和方法,分類編寫代碼的開發(fā)過程就是面向對象的程序設計碼的開發(fā)過程就是面向對象的程序設計(OOP)過過程程類:具有相同的特征和行為的事物類:具有相同的特征和行為的事物 對象:具體事務,這些事物具有靜態(tài)的特征和
10、動對象:具體事務,這些事物具有靜態(tài)的特征和動態(tài)的行為態(tài)的行為 12C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室面向對象概述13C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室面向對象概述面向對象程序設計面向對象程序設計對象和類之間的關系是具體到抽象,特殊到一般對象和類之間的關系是具體到抽象,特殊到一般的關系的關系14C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室面向對象概述程序設計的公式程序設計的公式 程序程序=算法算法+數(shù)據(jù)結構數(shù)據(jù)結構 程序程序=對象對象+對象
11、間的消息傳遞對象間的消息傳遞對象間的消息傳遞是指對象間的關聯(lián)對象間的消息傳遞是指對象間的關聯(lián) 15C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類在程序設計中,用類在程序設計中,用類(class)來描述具有相同結構來描述具有相同結構和特征,以及相同的行為的一組對象,也可以把類和特征,以及相同的行為的一組對象,也可以把類看作對象的類型,把對象看作類的變量,從而對照看作對象的類型,把對象看作類的變量,從而對照前幾章的內(nèi)容來理解類,例如整型前幾章的內(nèi)容來理解類,例如整型int,就是所有,就是所有在一定的范圍內(nèi)的整數(shù)的集合,對于這些整數(shù)的操在一定的范圍內(nèi)的整
12、數(shù)的集合,對于這些整數(shù)的操作必須是相同的。作必須是相同的。16C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類類1、C#中的命名慣例是類名的第一個字母大寫中的命名慣例是類名的第一個字母大寫2、如果類名有多個單詞,則每個單詞的第一個字母大寫、如果類名有多個單詞,則每個單詞的第一個字母大寫類的聲明類的聲明17C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類類類的封裝類的封裝 通過訪問修飾符,通過訪問修飾符,C#實現(xiàn)了類的封裝思想實現(xiàn)了類的封裝思想 類的封裝是面向對象的特征之一,通過封裝使一類的封裝是面向對象的特
13、征之一,通過封裝使一部分成員充當類與外部的接口,而將其他的成員隱蔽部分成員充當類與外部的接口,而將其他的成員隱蔽起來,這樣就達到了對成員訪問權限的合理控制,使起來,這樣就達到了對成員訪問權限的合理控制,使不同類之間的相互影響減少到最低限度,進而增強數(shù)不同類之間的相互影響減少到最低限度,進而增強數(shù)據(jù)的安全性和簡化程序的編寫工作。據(jù)的安全性和簡化程序的編寫工作。例如:個人信息,有些可以公開,有些屬于隱私例如:個人信息,有些可以公開,有些屬于隱私18C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類類類的封裝類的封裝訪問修飾符訪問修飾符修修 飾飾 符符作作
14、用用 說說 明明publicpublic表示不限制對類的訪問。表示不限制對類的訪問。類的訪問權限省略時默認為類的訪問權限省略時默認為 publicpublicprotectedprotected表示該類只能被這個類的成員或派生類成員訪問表示該類只能被這個類的成員或派生類成員訪問privateprivate表示該類只能被這個類的成員訪問表示該類只能被這個類的成員訪問internalinternal表示該類能夠由程序集中的所有文件使用,而不能由程序集之表示該類能夠由程序集中的所有文件使用,而不能由程序集之外的對象使用外的對象使用newnew只允許用在嵌套類中,它表示所修飾的類會隱藏繼承下來的同只允
15、許用在嵌套類中,它表示所修飾的類會隱藏繼承下來的同名成員名成員abstractabstract表示這是一個抽象類,該類含有抽象成員,因此不能被實例化,表示這是一個抽象類,該類含有抽象成員,因此不能被實例化,只能用作基類只能用作基類sealedsealed表示這是一個密封類,不能從這個類再派生出其他類。顯然密表示這是一個密封類,不能從這個類再派生出其他類。顯然密封類不能同時為抽象類封類不能同時為抽象類19C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類和對象類和對象20C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研
16、 室室類和對象類和對象21C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的字段類的字段字段:字段:在類中存儲信息的成員在類中存儲信息的成員22C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室字段的訪問級別字段的訪問級別類成員的默認訪問級別類成員的默認訪問級別privateprivate23C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室訪問控制修飾符訪問控制修飾符24C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室訪問控制修
17、飾符訪問控制修飾符internalinternalprotected internalprotected internal當父類和子類不在同一個程序集中時,當父類和子類不在同一個程序集中時,子類不能訪問父類的子類不能訪問父類的internalinternal成員。成員。25C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室靜態(tài)字段靜態(tài)字段26C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的靜態(tài)字段類的靜態(tài)字段、訪問實例字段:訪問實例字段:car1.color=car1.color=“BlueBlue”;訪問靜
18、態(tài)字段:訪問靜態(tài)字段:Car.count=Car.count+1;Car.count=Car.count+1;27C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的構造函數(shù)類的構造函數(shù)28C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的構造函數(shù)類的構造函數(shù)29C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的構造函數(shù)類的構造函數(shù)類的構造函數(shù):類的構造函數(shù):執(zhí)行類和對象的初始化工作的方法。執(zhí)行類和對象的初始化工作的方法。30C#程程 序序 設設 計計計計 算算 機
19、機 科科 學學 系系 軟軟 件件 教教 研研 室室類的構造函數(shù)的重載類的構造函數(shù)的重載構造函數(shù)是不返回值的。構造函數(shù)是不返回值的。31C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室構造函數(shù)的調(diào)用構造函數(shù)的調(diào)用構造函數(shù)是在產(chǎn)生一個類實例的時候,通過構造函數(shù)是在產(chǎn)生一個類實例的時候,通過newnew來調(diào)用。來調(diào)用。32C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室靜態(tài)構造函數(shù)(靜態(tài)構造函數(shù)(static constructorstatic constructor)典型作用:當類使用日志文件時,典型作用:當類使用
20、日志文件時,使用靜態(tài)構造函數(shù)向日志文件寫入項。使用靜態(tài)構造函數(shù)向日志文件寫入項。靜態(tài)構造函數(shù)沒有訪問級別修飾靜態(tài)構造函數(shù)沒有訪問級別修飾符,也沒有參數(shù)。符,也沒有參數(shù)。33C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室靜態(tài)構造函數(shù)靜態(tài)構造函數(shù)當類被加載時,類的靜態(tài)構造器當類被加載時,類的靜態(tài)構造器會被自動調(diào)用。會被自動調(diào)用。靜態(tài)構造器是在類的靜態(tài)成員被靜態(tài)構造器是在類的靜態(tài)成員被使用之前執(zhí)行的。使用之前執(zhí)行的。34C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室靜態(tài)構造函數(shù)靜態(tài)構造函數(shù)當有:當有:A a=ne
21、w A();先執(zhí)行類先執(zhí)行類A的靜態(tài)構造器,然后執(zhí)行類的靜態(tài)構造器,然后執(zhí)行類A的實例構造器。的實例構造器。當再有:當再有:A a1=new A();靜態(tài)構造器最多只執(zhí)行一次。靜態(tài)構造器最多只執(zhí)行一次。35C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室靜態(tài)構造函數(shù)靜態(tài)構造函數(shù)36C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室語法形式:語法形式:屬性集信息屬性集信息 extern 標識符標識符()析構函數(shù)體析構函數(shù)體其中:其中:標識符標識符必須與類名相同,但為了區(qū)分構造函數(shù),前面需加必須與類名相同,但為了區(qū)分
22、構造函數(shù),前面需加“”,表明它是析構函數(shù)。關于析構函數(shù),請注意:表明它是析構函數(shù)。關于析構函數(shù),請注意:析構函數(shù)不能由程序顯式地調(diào)用,而是由系統(tǒng)在釋放對象時自動調(diào)用。析構函數(shù)不能由程序顯式地調(diào)用,而是由系統(tǒng)在釋放對象時自動調(diào)用。如果對象是一個派生類對象,那么在調(diào)用析構函數(shù)時也會產(chǎn)生鏈式反應,如果對象是一個派生類對象,那么在調(diào)用析構函數(shù)時也會產(chǎn)生鏈式反應,首先執(zhí)行派生類的析構函數(shù),然后執(zhí)行基類的析構函數(shù),如果這個基類首先執(zhí)行派生類的析構函數(shù),然后執(zhí)行基類的析構函數(shù),如果這個基類還有自己的基類,這個過程就會不斷重復,直到調(diào)用還有自己的基類,這個過程就會不斷重復,直到調(diào)用Object類的析構類的析構
23、函數(shù)為止,其執(zhí)行順序正好與構造函數(shù)相反。函數(shù)為止,其執(zhí)行順序正好與構造函數(shù)相反。析構函數(shù)析構函數(shù)不能寫返回類型,也不能帶參數(shù),因此它不可能被重載,不能寫返回類型,也不能帶參數(shù),因此它不可能被重載,當然它也不能被繼承,所以一個類最多只能有一個析構函數(shù)。當然它也不能被繼承,所以一個類最多只能有一個析構函數(shù)。析構函數(shù)析構函數(shù)37C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室析構函數(shù)析構函數(shù)關于析構函數(shù),請注意:關于析構函數(shù),請注意:析構函數(shù)不能由程序顯式地調(diào)用,而是由系統(tǒng)在釋放對象時析構函數(shù)不能由程序顯式地調(diào)用,而是由系統(tǒng)在釋放對象時自動調(diào)用。自動調(diào)用。如
24、果對象是一個派生類對象,那么在調(diào)用析構函數(shù)時也會產(chǎn)如果對象是一個派生類對象,那么在調(diào)用析構函數(shù)時也會產(chǎn)生鏈式反應,首先執(zhí)行派生類的析構函數(shù),然后執(zhí)行基類的生鏈式反應,首先執(zhí)行派生類的析構函數(shù),然后執(zhí)行基類的析構函數(shù),如果這個基類還有自己的基類,這個過程就會不析構函數(shù),如果這個基類還有自己的基類,這個過程就會不斷重復,直到調(diào)用斷重復,直到調(diào)用Object類的析構函數(shù)為止,其執(zhí)行順序類的析構函數(shù)為止,其執(zhí)行順序正好與構造函數(shù)相反。正好與構造函數(shù)相反。38C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室垃圾回收和析構函數(shù)垃圾回收和析構函數(shù) 析構函數(shù)析構函數(shù):
25、1、由、由C#中的垃圾回收器調(diào)用,垃圾回收器通過銷毀不再需中的垃圾回收器調(diào)用,垃圾回收器通過銷毀不再需要或不再被引用的對象來釋放內(nèi)存。要或不再被引用的對象來釋放內(nèi)存。2、無任何參數(shù),也不返回值,函數(shù)名與類名相同,以、無任何參數(shù),也不返回值,函數(shù)名與類名相同,以開頭。開頭。3、析構函數(shù)是自動被調(diào)用的,當任何代碼都不再可能使用一、析構函數(shù)是自動被調(diào)用的,當任何代碼都不再可能使用一個實例時,當程序退出時,都會調(diào)用析構函數(shù)。個實例時,當程序退出時,都會調(diào)用析構函數(shù)。4、只應該用來清理非托管資源,垃圾回收器會自動清理托管、只應該用來清理非托管資源,垃圾回收器會自動清理托管資源。資源。5、析構函數(shù)可以包含
26、恰在對象銷毀前需要執(zhí)行的代碼(如關、析構函數(shù)可以包含恰在對象銷毀前需要執(zhí)行的代碼(如關閉文件、保存狀態(tài)信息等)。閉文件、保存狀態(tài)信息等)。6、析構函數(shù)實際上是對、析構函數(shù)實際上是對System.Object的虛方法的虛方法Finalize的重寫,的重寫,c#不允許重寫此方法或直接調(diào)用它(或它的重寫)。不允許重寫此方法或直接調(diào)用它(或它的重寫)。39C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室垃圾回收器垃圾回收器垃圾回收器的工作原理:垃圾回收器的工作原理:如果為定義析構函數(shù)的對象分配了內(nèi)存如果為定義析構函數(shù)的對象分配了內(nèi)存,運行庫將把,運行庫將把該對
27、象添加到需要銷毀的對象的列表中。該對象添加到需要銷毀的對象的列表中。垃圾回收垃圾回收器定期檢查器定期檢查有沒有不再被引用的對象,有沒有不再被引用的對象,如果如果找到了找到了其名稱沒有列在銷毀器列表中的對象,就其名稱沒有列在銷毀器列表中的對象,就立即清除該對象。立即清除該對象。完成垃圾回收后完成垃圾回收后,將調(diào)用銷毀器線程,該線程調(diào)用有標將調(diào)用銷毀器線程,該線程調(diào)用有標記為記為“準備銷毀準備銷毀”的對象的銷毀方法(析構函數(shù))。的對象的銷毀方法(析構函數(shù))。對象銷毀過程發(fā)生后對象銷毀過程發(fā)生后,就將該對象從需要銷毀的對象列表就將該對象從需要銷毀的對象列表中刪除。中刪除。因為因為該對象沒有被引用,也
28、沒有列在銷毀器列表中,所該對象沒有被引用,也沒有列在銷毀器列表中,所以下次進行垃圾回收時就會將它清除。以下次進行垃圾回收時就會將它清除。40C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室析構函數(shù)析構函數(shù)public class Person string name;public Person(string myname)name=myname;public string Name get return name;set name=value;Person()StreamWriter sr=new StreamWriter(d:人員信息人員信息.txt
29、,true);sr.WriteLine(this.Name);sr.Close();41C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室析構函數(shù)析構函數(shù) 1、當不再需要某對象時,、當不再需要某對象時,CLR調(diào)用該對象的析構函數(shù),然調(diào)用該對象的析構函數(shù),然后釋放其內(nèi)存,析構函數(shù)執(zhí)行清理任務,如保存狀態(tài)信息、關后釋放其內(nèi)存,析構函數(shù)執(zhí)行清理任務,如保存狀態(tài)信息、關閉文件和數(shù)據(jù)庫的連接,以及執(zhí)行在釋放對象前必須完成的其閉文件和數(shù)據(jù)庫的連接,以及執(zhí)行在釋放對象前必須完成的其它任務。它任務。2、調(diào)用析構函數(shù)的時間是不確定的,在對象喪失范圍和系統(tǒng)、調(diào)用析構函數(shù)的時
30、間是不確定的,在對象喪失范圍和系統(tǒng)自動調(diào)用析構函數(shù)之間通常會有延遲。自動調(diào)用析構函數(shù)之間通常會有延遲。3、應用程序終止之前一定會調(diào)用析構函數(shù)。、應用程序終止之前一定會調(diào)用析構函數(shù)。4、基類的析構函數(shù)是不能被繼承的,若派生類需要析構函數(shù),、基類的析構函數(shù)是不能被繼承的,若派生類需要析構函數(shù),必須在派生類中聲明它。必須在派生類中聲明它。5、析構函數(shù)首先從最相近派生的類開始運行,最后執(zhí)行基類析構函數(shù)首先從最相近派生的類開始運行,最后執(zhí)行基類中的代碼。中的代碼。42C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室析構函數(shù)析構函數(shù) class Employee:
31、Person string id;public Employee(string name,string id):base(name)this.ID=id;public string ID get return id;set id=value;Employee()SaveStateInfo1();protected void SaveStateInfo1()StreamWriter sr;sr=new StreamWriter(D:人員信息人員信息.txt,true);sr.WriteLine(this.ID);sr.Close();Employee e1=new Employee(Tom,01
32、0203);43C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室創(chuàng)建程序集創(chuàng)建程序集 程序集是任何程序集是任何.NET Framework 應用程序的基本構造塊。應用程序的基本構造塊。例如,在生成簡單的例如,在生成簡單的 C#應用程序時,應用程序時,Visual Studio 創(chuàng)建一個創(chuàng)建一個單個可移植可執(zhí)行單個可移植可執(zhí)行(PE)文件形式的程序集,明確地說就是一個文件形式的程序集,明確地說就是一個 EXE 或或 DLL。1、創(chuàng)建具有、創(chuàng)建具有.exe 擴展名的程序集并指定輸出文件名擴展名的程序集并指定輸出文件名 從名為從名為 myCode 的代碼模塊
33、創(chuàng)建名為的代碼模塊創(chuàng)建名為 myAssembly.exe 的的程序集程序集csc/out:myAssembly.exe myCode.cs 2、創(chuàng)建庫程序集、創(chuàng)建庫程序集 庫程序集與類庫相似。它包含將由其他程序集引用的類型,但沒有開始執(zhí)庫程序集與類庫相似。它包含將由其他程序集引用的類型,但沒有開始執(zhí)行的入口點。行的入口點。csc/out:myCodeLibrary.dll/t:library myCode.cs從名為從名為 myCode 的代碼模塊創(chuàng)建名為的代碼模塊創(chuàng)建名為 myCodeAssembly.dll 的庫程序集。的庫程序集。44C#程程 序序 設設 計計計計 算算 機機 科科 學學
34、 系系 軟軟 件件 教教 研研 室室45C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的方法類的方法46C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的方法類的方法47C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的方法類的方法方法:方法:描述一個對象的動作。描述一個對象的動作。調(diào)用方法:調(diào)用方法:Car car1=new Car();Car car1=new Car();car1.Run();car1.Run();48C#程程 序序 設設 計計計計 算算
35、機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的訪問修飾符方法的訪問修飾符49C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的返回值方法的返回值如果說參數(shù)是方法的如果說參數(shù)是方法的”輸入輸入“,那么返回值就是方法的那么返回值就是方法的”輸出輸出“。Console.WriteLine(car1Console.WriteLine(car1的重量是的重量是+car1.GetWeight()+car1.GetWeight()+噸噸););50C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室51C#程程
36、序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)傳遞類型方法的參數(shù)傳遞類型52C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室值傳遞、引用傳遞和值傳遞、引用傳遞和refref參數(shù)參數(shù) 參數(shù)傳遞:參數(shù)傳遞:1 1、值值傳傳遞遞:實實參參將將值值拷拷貝貝給給形形參參,系系統(tǒng)統(tǒng)要要為為形形參參開開設設存存儲儲空空間間,以以接接受受傳傳遞遞的的值值,此此時時形形參參成成為為一一個個實實在在的的局局部部變變量量,從從此此實實參參和和形形參參脫脫離離關關系系,形形參參在在方方法法中中參參與與運運算算,在在運運算算中中的的發(fā)
37、生的任何變化都不會影響實參;發(fā)生的任何變化都不會影響實參;2 2、引引用用傳傳遞遞:實實參參將將自自己己的的引引用用,也也就就是是自自己己數(shù)數(shù)據(jù)據(jù)在在存存儲儲器器中中的的地地址址拷拷貝貝給給形形參參,這這時時形形參參如如同同實實參參的的別別名名,系系統(tǒng)統(tǒng)不不必必為為形形參參開開設設存存儲儲空空間間,形形參參在在方方法法中中的的任任何何改改變變就就是是實實參參的的改改變變,所所以以引引用用參參數(shù)數(shù)既既是是方方法法的的輸輸入入,又又是是方方法法的的輸輸出出,引引用用傳傳遞遞的的形形參參需需要要用用refref關關鍵鍵字字聲聲明明,調(diào)調(diào)用用方方法法時時的的實實參參也也要要添添加加refref關關鍵字
38、。鍵字。3 3、對對于于屬屬性性、事事x x件件、索索引引器器和和用用戶戶定定義義的的運運算算符符來來說說,它它們們的的參參數(shù)數(shù)總總是是作作為為值值參參數(shù)數(shù)傳傳遞遞的的。這這些些成成員員類類別別不不支支持持引引用用參參數(shù)數(shù)和輸出參數(shù)(和輸出參數(shù)(outout)。)。53C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室值傳遞、引用傳遞和值傳遞、引用傳遞和refref參數(shù)參數(shù) C C#的的數(shù)數(shù)據(jù)據(jù)類類型型有有值值類類型型和和引引用用類類型型兩兩種種,所所以以參參數(shù)數(shù)傳傳遞遞時時,在形式上有四種情況:在形式上有四種情況:1 1、值類型參數(shù)進行值傳遞、值類型參
39、數(shù)進行值傳遞2 2、引用類型參數(shù)進行值傳遞、引用類型參數(shù)進行值傳遞3 3、值類型參數(shù)進行引用傳遞、值類型參數(shù)進行引用傳遞4 4、引用類型參數(shù)進行引用傳遞、引用類型參數(shù)進行引用傳遞54C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室out參數(shù) 一般情況下,一個方法只有一個返回值,返回數(shù)據(jù)是一種一般情況下,一個方法只有一個返回值,返回數(shù)據(jù)是一種輸出的方式,輸出的方式,ref修飾的參數(shù),或者是引用類型參數(shù),它們既是修飾的參數(shù),或者是引用類型參數(shù),它們既是輸入,又是輸出,輸入,又是輸出,out參數(shù)提供了更靈活的輸出方式。參數(shù)提供了更靈活的輸出方式。outout
40、參數(shù)也稱為輸出參數(shù)。和參數(shù)也稱為輸出參數(shù)。和refref參數(shù)類似,用參數(shù)類似,用outout修飾的參修飾的參數(shù),直接將引用傳遞給方法,不在存儲器中為參數(shù)開設新的空數(shù),直接將引用傳遞給方法,不在存儲器中為參數(shù)開設新的空間,但是,和間,但是,和refref參數(shù)不一樣,調(diào)用方法前并不需要對參數(shù)作初參數(shù)不一樣,調(diào)用方法前并不需要對參數(shù)作初始化,正因為如此,在始化,正因為如此,在outout參數(shù)沒有被顯式賦值之前,不能使用,參數(shù)沒有被顯式賦值之前,不能使用,在方法結束前應該對在方法結束前應該對outout參數(shù)賦值。參數(shù)賦值。調(diào)用方法時,也要用調(diào)用方法時,也要用outout修飾實參,并且實參必須是變量,修
41、飾實參,并且實參必須是變量,不能是屬性、表達式。不能是屬性、表達式。out參數(shù)可以用在實例方法、靜態(tài)方法和實例構造函數(shù)中,參數(shù)可以用在實例方法、靜態(tài)方法和實例構造函數(shù)中,不能用在屬性和索引器中。不能用在屬性和索引器中。55C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室向方法傳遞可變數(shù)量的參數(shù)向方法傳遞可變數(shù)量的參數(shù)56C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室params參數(shù) 一般情況下,方法的輸入是通過參數(shù)列表規(guī)定的,輸入?yún)?shù)的個一般情況下,方法的輸入是通過參數(shù)列表規(guī)定的,輸入?yún)?shù)的個數(shù)不能隨著實際調(diào)
42、用的需要而改變,數(shù)不能隨著實際調(diào)用的需要而改變,params參數(shù)則提供了這樣一種參數(shù)則提供了這樣一種方便,例如,有方便,例如,有n組數(shù)據(jù),每一組數(shù)據(jù)個數(shù)都不一樣,但都要求平均組數(shù)據(jù),每一組數(shù)據(jù)個數(shù)都不一樣,但都要求平均數(shù),在數(shù),在C#中,借助中,借助params參數(shù),只要定義一個方法就可以完成這樣參數(shù),只要定義一個方法就可以完成這樣的靈活功能。的靈活功能。params參數(shù)也稱為參數(shù)數(shù)組。參數(shù)也稱為參數(shù)數(shù)組。params參數(shù)是具有一維數(shù)組性質(zhì)的數(shù)參數(shù)是具有一維數(shù)組性質(zhì)的數(shù)組類型的參數(shù),例如一維數(shù)組,或者交錯數(shù)組,但不能是多維數(shù)組;組類型的參數(shù),例如一維數(shù)組,或者交錯數(shù)組,但不能是多維數(shù)組;par
43、ams參數(shù)實際上是不定長的數(shù)組,定義形參時要使用參數(shù)實際上是不定長的數(shù)組,定義形參時要使用params關鍵關鍵字,不需要指定長度,在調(diào)用時,實參不需要用字,不需要指定長度,在調(diào)用時,實參不需要用params關鍵字,實關鍵字,實參可以是任意個數(shù)的元素,也可以是一個同類型的數(shù)組。參可以是任意個數(shù)的元素,也可以是一個同類型的數(shù)組。params參數(shù)只能作為參數(shù)列表的最后一個參數(shù)。參數(shù)只能作為參數(shù)列表的最后一個參數(shù)。params參數(shù)不能再用參數(shù)不能再用ref或或out修飾。修飾。57C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室值參數(shù)的傳遞值參數(shù)的傳遞58C#
44、程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室引用參數(shù)的傳遞引用參數(shù)的傳遞59C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室輸出參數(shù)的傳遞輸出參數(shù)的傳遞60C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室輸出參數(shù)和引用參數(shù)的區(qū)別輸出參數(shù)和引用參數(shù)的區(qū)別61C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)參數(shù)的傳入或傳出就是在實參與形參之間發(fā)生的,參數(shù)的傳入或傳出就是在實參與形參之間發(fā)生的,在在C#中實參與形參
45、有中實參與形參有4種傳遞方式。種傳遞方式。1值參數(shù)值參數(shù) 在方法聲明時不加修飾的形參就是值參數(shù),它表在方法聲明時不加修飾的形參就是值參數(shù),它表明實參與形參之間按值傳遞。這種傳遞方式的好處明實參與形參之間按值傳遞。這種傳遞方式的好處是,在方法中對形參的修改不影響外部的實參,也是,在方法中對形參的修改不影響外部的實參,也就是說,數(shù)據(jù)只能傳入方法而不能從方法傳出,所就是說,數(shù)據(jù)只能傳入方法而不能從方法傳出,所以值參數(shù)有時也被稱為入?yún)?shù)。以值參數(shù)有時也被稱為入?yún)?shù)。62C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室using System;class Myc
46、lass public void Sort(int x,int y,int z)int tmp;/tmp是方法是方法Sort的局部變的局部變量量 /將將x,y,z按從小到大排序按從小到大排序if(xy)tmp=x;x=y;y=tmp;if(xz)tmp=x;x=z;z=tmp;if(yz)tmp=y;y=z;z=tmp;class Test static void Main()Myclass m=new Myclass();int a,b,c;a=30;b=20;c=10;m.Sort(a,b,c);Console.WriteLine(a=0,b=1,c=2,a,b,c);Console.Re
47、ad();【例例3.7】下面的程序演示了當方法Sort傳遞的是值參數(shù)時,對形參的修改不影響其實參。方法的參數(shù)方法的參數(shù)63C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù) a、b、c 變量的值并沒有發(fā)生改變,因為它們都變量的值并沒有發(fā)生改變,因為它們都是按值傳給形參是按值傳給形參x、y、z的,形參的,形參x、y、z的變化的變化并不影響外部并不影響外部a、b、c的值。的值。但如果給方法傳遞的是一個引用對象時,它遵循的但如果給方法傳遞的是一個引用對象時,它遵循的仍是值參數(shù)傳遞方式,形參另外分配一塊內(nèi)存,接仍是值參數(shù)傳遞方式,形參另外分配
48、一塊內(nèi)存,接受實參的引用值副本,同樣對引用值的修改不會影受實參的引用值副本,同樣對引用值的修改不會影響外面的實參。但是,如果改變參數(shù)所引用的對象響外面的實參。但是,如果改變參數(shù)所引用的對象將會影響實參所引用的對象,事實上,它們是同一將會影響實參所引用的對象,事實上,它們是同一塊內(nèi)存區(qū)域。塊內(nèi)存區(qū)域。64C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室【例3.8】下面程序演示的是當方法傳遞的是一個引用對象(如數(shù)組)時,對形參的修改會影響到實參。方法的參數(shù)方法的參數(shù)using System;class Myclass public void SortArr
49、ay(int a)int i,j,pos,tmp;for(i=0;ia.Length1;i+)for(pos=j=i;ja j)pos=j;if(pos!=i)tmp=ai;ai=apos;apos=tmp;65C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)class Test static void Main()Myclass m=new Myclass();int score=87,89,56,90,100,75,64,45,80,84;m.SortArray(score);for(int i=0;iy)tmp=x;x=y;y
50、=tmp;if(xz)tmp=x;x=z;z=tmp;if(yz)tmp=y;y=z;z=tmp;68C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)class Teststatic void Main()Myclass m=new Myclass();int a,b,c;a=30;b=20;c=10;m.Sort(ref a,ref b,ref c);Console.WriteLine(a=0,b=1,c=2,a,b,c);Console.Read();69C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件
51、教教 研研 室室方法的參數(shù)方法的參數(shù)使用使用ref時請注意:時請注意:(1)ref關鍵字僅對跟在它后面的參數(shù)有效,而不能應用于關鍵字僅對跟在它后面的參數(shù)有效,而不能應用于整個參數(shù)表。例如,整個參數(shù)表。例如,Sort方法中方法中x、y、z都要加都要加ref修飾。修飾。(2)在調(diào)用方法時,也用)在調(diào)用方法時,也用ref修飾實參變量,因為是引用參修飾實參變量,因為是引用參數(shù),所以要求實參與形參的數(shù)據(jù)類型必須完全匹配,而且實數(shù),所以要求實參與形參的數(shù)據(jù)類型必須完全匹配,而且實參必須是變量,不能是常量或表達式。參必須是變量,不能是常量或表達式。(3)在方法外,)在方法外,ref參數(shù)必須在調(diào)用之前明確賦值
52、,在方法參數(shù)必須在調(diào)用之前明確賦值,在方法內(nèi),內(nèi),ref參數(shù)被視為已賦過初始值。參數(shù)被視為已賦過初始值。70C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)3.輸出參數(shù)輸出參數(shù) 在參數(shù)前加在參數(shù)前加out修飾符的被稱為輸出參數(shù),它與修飾符的被稱為輸出參數(shù),它與ref參數(shù)相似,只有一點除外,就是它只能用于從參數(shù)相似,只有一點除外,就是它只能用于從方法中傳出值,而不能從方法調(diào)用處接受實參數(shù)據(jù)。方法中傳出值,而不能從方法調(diào)用處接受實參數(shù)據(jù)。在方法內(nèi)在方法內(nèi)out參數(shù)被認為是未賦過值的,所以在方參數(shù)被認為是未賦過值的,所以在方法結束之前應該
53、對法結束之前應該對out參數(shù)賦值。參數(shù)賦值。71C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室【例例3.10】求一個數(shù)組中元素的最大值、最小值和平均值。方法的參數(shù)方法的參數(shù)using System;class Myclass public void MaxMinArray(int a,out int max,out int min,out double avg)int sum;sum=max=min=a0;for(int i=1;imax)max=ai;if(aimin)min=ai;sum+=ai;avg=sum/a.Length;72C#程程 序
54、序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)class Teststatic void Main()Myclass m=new Myclass();int score=87,89,56,90,100,75,64,45,80,84;int smax,smin;double savg;m.MaxMinArray(score,out smax,out smin,out savg);Console.Write(Max=0,Min=1,Avg=2 ,smax,smin,savg);Console.Read();73C#程程 序序 設設 計計計計 算算
55、 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù) ref和和out參數(shù)的使用并不局限于值類型參數(shù),它們也可用參數(shù)的使用并不局限于值類型參數(shù),它們也可用于引用類型來傳遞對象。于引用類型來傳遞對象。【例例3.11】下面程序定義了兩個方法,一個是下面程序定義了兩個方法,一個是Swap1,一,一個是個是Swap2,它們都有兩個引用對象作為參數(shù),但,它們都有兩個引用對象作為參數(shù),但Swap2的參數(shù)加了的參數(shù)加了ref修飾,調(diào)用這兩個方法產(chǎn)生的結果是不一樣的。修飾,調(diào)用這兩個方法產(chǎn)生的結果是不一樣的。74C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教
56、教 研研 室室方法的參數(shù)方法的參數(shù)using System;class Myclass public void Swap1(string s,string t)string tmp;tmp=s;s=t;t=tmp;public void Swap2(ref string s,ref string t)string tmp;tmp=s;s=t;t=tmp;class Teststatic void Main()75C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)Myclass m=new Myclass();string s1=ABC
57、DEFG,s2=134567;m.Swap1(s1,s2);Console.WriteLine(s1=0,s1);/s1,s2的引用并沒有改變的引用并沒有改變Console.WriteLine(s2=0,s2);m.Swap2(ref s1,ref s2);/s1,s2的引用互相交換了的引用互相交換了Console.WriteLine(s1=0,s1);Console.WriteLine(s2=0,s2);Console.Read();76C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)4參數(shù)數(shù)組參數(shù)數(shù)組 一般而言,調(diào)用方法時其實參
58、必須與該方法聲明的形參在一般而言,調(diào)用方法時其實參必須與該方法聲明的形參在類型和數(shù)量上相匹配,但有時候我們更希望靈活一些,類型和數(shù)量上相匹配,但有時候我們更希望靈活一些,C#提供了傳遞可變長度參數(shù)表的機制,使用提供了傳遞可變長度參數(shù)表的機制,使用params關鍵字關鍵字來指定一個可變長的參數(shù)表。來指定一個可變長的參數(shù)表?!纠?.12】下面程序演示了下面程序演示了Myclass類中的方法類中的方法MaxMin有一個參數(shù)數(shù)組類型的參數(shù),在調(diào)用這個方法時具有靈活性。有一個參數(shù)數(shù)組類型的參數(shù),在調(diào)用這個方法時具有靈活性。77C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教
59、教 研研 室室方法的參數(shù)方法的參數(shù)using System;class Myclass public void MaxMin(out int max,out int min,params int a)if(a.Length=0)/如果可變參數(shù)為零個,可以取一個約定值或產(chǎn)生異常如果可變參數(shù)為零個,可以取一個約定值或產(chǎn)生異常max=min=1;return;max=min=a0;for(int i=1;imax)max=ai;if(aimin)min=ai;78C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)class Test sta
60、tic void Main()Myclass m=new Myclass();int score=87,89,56,90,100,75,64,45,80,84;int smax,smin;m.MaxMin(out smax,out smin);/可變參數(shù)的個數(shù)可以是零個 Console.WriteLine(Max=0,Min=1 ,smax,smin);m.MaxMin(out smax,out smin,45,76,89,90);/在4個數(shù)之間找最大、最小 Console.WriteLine(Max=0,Min=1 ,smax,smin);m.MaxMin(out smax,out smin
61、,score);/可變參數(shù)也可接受數(shù)組對象 Console.WriteLine(Max=0,Min=1 ,smax,smin);Console.Read();79C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室C#C#的優(yōu)勢的優(yōu)勢 作為編程語言,作為編程語言,C#是現(xiàn)代的、簡單的、完全面向是現(xiàn)代的、簡單的、完全面向對象的,而且是類型安全的。重要的是,對象的,而且是類型安全的。重要的是,C#是一是一種現(xiàn)代編程語言。在類、名字空間、方法重載和異種現(xiàn)代編程語言。在類、名字空間、方法重載和異常處理等方面,常處理等方面,C#去掉了去掉了C+中的許多復雜性,中的許
62、多復雜性,借鑒和修改了借鑒和修改了Java的許多特性,使其更加易于使的許多特性,使其更加易于使用,不易出錯。用,不易出錯。下面列舉了一些下面列舉了一些C#在設計上的優(yōu)點:在設計上的優(yōu)點:80C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參數(shù)方法的參數(shù)【例例3.12】下面程序演示了下面程序演示了Myclass類中的方法類中的方法MaxMin有一個參數(shù)數(shù)組類型的參數(shù),在調(diào)用這個有一個參數(shù)數(shù)組類型的參數(shù),在調(diào)用這個方法時具有靈活性。方法時具有靈活性。81C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室方法的參
63、數(shù)方法的參數(shù)using System;class Myclass public void MaxMin(out int max,out int min,params int a)if(a.Length=0)/如果可變參數(shù)為零個,可以取一個約定值或產(chǎn)如果可變參數(shù)為零個,可以取一個約定值或產(chǎn)生異常生異常max=min=1;return;max=min=a0;for(int i=1;imax)max=ai;if(ai 2)_id=value;public string GetId()return _id;方法方法 SetId(Value)和和 GetId()分別讀取和寫入職員分別讀取和寫入職員 ID
64、 Employee emp;emp.SetId(A1);string Department=emp.Get()每次每次都都調(diào)用調(diào)用 GetId()和和 SetId()方法會很繁瑣方法會很繁瑣屬性101C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的屬性簡介類的屬性簡介class Employee private static string _name;private static string _id;public string Id get return _id;set/驗證輸入長度小于驗證輸入長度小于 2if(_id.Length 2)_id=
65、value;讀取讀取 ID 時調(diào)用時調(diào)用 將值將值賦給賦給 ID 時調(diào)用時調(diào)用 102C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的屬性類型類的屬性類型1 1 訪問修飾符訪問修飾符 數(shù)據(jù)類型數(shù)據(jù)類型 屬屬性名性名 get;set;讀/寫屬性可以賦值和檢索值可以賦值和檢索值103C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的屬性類型類的屬性類型2 2訪問修飾符 數(shù)據(jù)類型 屬性名get;只讀屬性只能檢索值104C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的
66、屬性類型類的屬性類型3 3訪問修飾符 數(shù)據(jù)類型 屬性名set;只寫屬性只能賦值105C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的屬性類型類的屬性類型4 4訪問修飾符static 數(shù)據(jù)類型 屬性名get;set;靜態(tài)屬性應用于整個類而不是類的實例只能訪問類的靜態(tài)成員106C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室類的屬性類的屬性valuevalue關鍵字:表示對屬性進行寫操作時提供的參數(shù)。關鍵字:表示對屬性進行寫操作時提供的參數(shù)。get定義屬性的讀操作定義屬性的讀操作set定義屬性的寫操作定義屬性的寫操作107C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室屬性與字段屬性與字段1、對于屬性,可以提供、對于屬性,可以提供get方法以支持讀,方法以支持讀,set方法以支持寫,也可以不提供。方法以支持寫,也可以不提供。108C#程程 序序 設設 計計計計 算算 機機 科科 學學 系系 軟軟 件件 教教 研研 室室屬性與字段屬性與字段2、屬性擁有一些方法的特
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案