播客.net基礎(chǔ)第09-今天和明天_第1頁
播客.net基礎(chǔ)第09-今天和明天_第2頁
播客.net基礎(chǔ)第09-今天和明天_第3頁
播客.net基礎(chǔ)第09-今天和明天_第4頁
播客.net基礎(chǔ)第09-今天和明天_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余33頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

面向?qū)ο蟾拍?S)世界是由什么組成的:數(shù)學(xué)家,攝影家.畫家程序員萬物皆對象試著描述趙老師和學(xué)生張三的特征和行為屬性——對象具有的各種特征每個對象的每個屬性都擁有特定值例如:趙老師和張三的年齡不一樣.屬性:姓名,性別,年齡屬性的值:方法:行為,動作.執(zhí)行的操作.方法:楊老師的行為,上課.

學(xué)生的行為,學(xué)習(xí)聽老師講課練習(xí):說說教室里有哪些對象?這些對象有哪些屬性和方法?比如:電腦/燈/音箱等等桌子,椅子一切皆對象找出下列對象共性張三(一個學(xué)生)\楊老師\鄰居售貨員張阿姨\李四的爸爸\李四的媽媽姓名、性別、年齡、身高、體重...吃喝拉撒睡門口停的奔馳S320汽車/老師開的QQ汽車/楊老師的解放牌大貨車,牛老師開的寶馬自行車車洋氣貴類:類是模子,確定對象將會擁有的特征(屬性)和行為(方法)類是對象的類型人類張三;intnumber;類和對象的區(qū)別類是抽象的概念,僅僅是模板,比如說:“人”類對象是一個你能夠看得到、摸得著的具體實體"人"類都有:姓名\性別\年齡屬性,有說話的方法.張三是一個對象,他的姓名屬性的值:張三性別的屬性的值:男年齡屬性的值:20張三會說話對象可以叫做類的實例(Instance)類不占內(nèi)存,對象才占內(nèi)存.類的定義定的定義語法:[訪問修飾符]class類名{成員;......}類中可以包含變量的定義、方法。請練習(xí)定義一個人類.人類分別用三個變量來表示姓名性別年齡,有一個打招呼的方法,有一個走路的方法.類的實例化(S)類的實例化,用關(guān)鍵字new

語法:類實例名=new類();類的成員的訪問:實例名.屬性實例名.方法名();字段、方法、屬性(后面講)都可以叫做類的成員Member,它們都需要定義訪問級別。訪問級別的用處在于控制成員在哪些地方可以被訪問,這樣達(dá)到面向?qū)ο笾小胺庋b”的目的.訪問修飾符:publicprivate(internalprotected)屬性字段用public修飾的問題…用private屬性的定義.get;set;屬性是為了保護(hù)與之相對應(yīng)的字段的.保證對字段的讀取和賦值符合要求.屬性可分為:讀寫、只讀、只寫。允許外部訪問的變量一定要聲明為屬性。類的練習(xí):Student定義一個學(xué)生類,有六個屬性,分別為姓名、性別、年齡、語文、數(shù)學(xué)、英語成績。有2個方法:一個打招呼的方法:介紹自己叫XX,今年幾歲了。是男同學(xué)還是女同學(xué)。兩個計算自己總分?jǐn)?shù)和平均分的方法。{顯示:我叫XX,這次考試總成績?yōu)閄分,平均成績?yōu)閄分}實化兩個對象并測試:張三男18三科成績?yōu)?909580小蘭女16三科成績?yōu)?9585100類的構(gòu)造方法(S)構(gòu)造方法用來創(chuàng)建對象,并且可以在構(gòu)造函數(shù)中對對象進(jìn)行初始化。構(gòu)造函數(shù)是用來創(chuàng)建對象的特殊方法,方法名和類名一樣,沒有返回值,連void都不用。構(gòu)造函數(shù)可以有參數(shù),new對象的時候傳遞函數(shù)參數(shù)即可如果不指定構(gòu)造函數(shù),則類有一個默認(rèn)的無參構(gòu)造函數(shù)。如果指定了構(gòu)造函數(shù),則不再有默認(rèn)的無參構(gòu)造函數(shù),如果需要無參構(gòu)造函數(shù),則需要自己來寫。構(gòu)造函數(shù)可以重載,也就是有多個參數(shù)不同的構(gòu)造函數(shù)。認(rèn)識類圖c#中的類圖和通用類圖-age:int-name:string+Name:string類名Student+SayHi():void析夠函數(shù)(*)~不能在結(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ù)。練習(xí)1給前面寫的學(xué)生類添加構(gòu)造方法.使在實例化學(xué)生類的時候可以通過構(gòu)造方法對姓名性別年齡語數(shù)英等屬性賦值,也可以只對姓名和性別賦值.年齡默認(rèn)為18歲,語數(shù)英成績默認(rèn)為0分.張三男18三科成績?yōu)?909580小蘭女16三科成績?yōu)?9585100練習(xí)2:寫一個Ticket類,有一個距離屬性(本屬性只讀,在構(gòu)造方法中賦值),不能為負(fù)數(shù),有一個價格屬性,價格屬性只讀,并且根據(jù)距離distance計算價格Price

(1元/公里):0-100公里票價不打折101-200公里總額打9.5折201-300公里總額打9折300公里以上總額打8折有一個方法,可以顯示這張票的信息.90公里90塊錢測試上面的類.臨時回憶(溫故而知新)參數(shù)中使用out和ref的區(qū)別(傳出/傳入傳出)數(shù)組做為參數(shù)(講過了)params,看Console.WriteLine();可變數(shù)組我也可以做到命名空間namespace(命名空間),用于解決類重名問題,可以看做“類的文件夾”。如果代碼和被使用的類在一個namespace則不需要using。在不同命名空間下的類調(diào)用有兩種方法:寫全稱命名空間.類名先using引用命名空間,再調(diào)用字符串的處理(S)string可以看做是char的只讀數(shù)組。charc=s[1];。例子:遍歷輸出string中的每個元素。C#中字符串有一個重要的特性:不可變性,字符串一旦聲明就不再可以改變。所以只能通過索引來讀取指定位置的char,不能對指定位置的char進(jìn)行修改。如果要對char進(jìn)行修改,那么就必須創(chuàng)建一個新的字符串,用s.ToCharArray()方法得到字符串的char數(shù)組,對數(shù)組進(jìn)行修改后,調(diào)用newstring(char[])這個構(gòu)造函數(shù)(暫時不用細(xì)研究)來創(chuàng)建char數(shù)組的字符串。一旦字符串被創(chuàng)建,那么char數(shù)組的修改也不會造成字符串的變化。例子:將字符串中的A替換為a。字符串練習(xí)一:隨機(jī)輸入你心中想到的一個名字,然后輸出它的字符串長度Length:可以得字符串的長度練習(xí)二:兩個學(xué)員輸入各自最喜歡的課程名稱,判斷是否一致,如果相等,則輸出你們倆喜歡相同的課程.如果不相同,則輸出你們倆喜歡不相同的課程.上題中兩位同學(xué)輸入c#和C#代表同一門課,怎么辦?字符串的連接+,兩邊只要有一個是字符串類型,另一個也會被自動轉(zhuǎn)換成字符串類型一切類型都可以調(diào)用.ToString()方法轉(zhuǎn)換成字符串類型.String類常用方法(S)ToLower():得到字符串的小寫形式。注意字符串是不可變的,所以這些函數(shù)都不會直接改變字符串的內(nèi)容,而是把修改后的字符串的值通過函數(shù)返回值的形式返回。s.ToLower()與s=s.ToLower()ToUpper():得到字符串的大寫形式;Trim()去掉字符串兩端的空白。s1.Equals(s2,parison.OrdinalIgnoreCase),兩個字符串進(jìn)行比較不區(qū)分大小寫的比較。s1==s2常見疑問誰說字符串不可變?strings="abc";s="123",s這不是變了嗎要區(qū)分變量名和變量指向的值的區(qū)別。程序中可以有很多字符串,然后由字符串變量指向他們,變量可以指向其他的字符串,但是字符串本身沒有變化。字符串不可變性指的是內(nèi)存中的字符串不可變,而不是變量不變。strings10=s1;//s10指向s1指向的字符串,而不是s10指向s1,哪怕s1以后指向了其他內(nèi)存,那么s10還是指向"hello"abcadmin888888s1s1字符串的分割(S)string[]Split(paramschar[]separator):將字符串按照指定的分割符分割為字符串?dāng)?shù)組;string[]Split(char[]separator,StringSplitOptionsoptions)將字符串按照指定的char分割符分割為字符串?dāng)?shù)組(options取RemoveEmptyEntries的時候移除結(jié)果中的空白字符串);練習(xí):從日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。讓用戶輸入一個日期格式如:2008-01-02,你輸出你輸入的日期為2008年1月2日字符串函數(shù)詳解字符串替換:stringReplace(stringoldValue,stringnewValue)將字符串中的出現(xiàn)oldValue的地方替換為newValue。例子:名字替換。取子字符串:stringSubstring(intstartIndex),取從位置startIndex開始一直到最后的子字符串;stringSubstring(intstartIndex,intlength),取從位置startIndex開始長度為length的子字符串,如果子字符串的長度不足length則報錯。boolContains(stringvalue)判斷字符串中是否含有子串valueboolStartsWith(stringvalue)判斷字符串是否以子串value開始;boolEndsWith(stringvalue)判斷字符串是否以子串value結(jié)束;intIndexOf(stringvalue):取子串value第一次出現(xiàn)的位置。LastIndexofTrim()TrimEnd()TrimStrat()IsNullOrEmpty()string.Join()IntIndexOf(stringvalue,intstartIndex)字符串常用方法:學(xué)習(xí)查看msdnStringBuilder和String的區(qū)別?(*)答:String在進(jìn)行運(yùn)算時(如賦值、拼接等)會產(chǎn)生一個新的實例,而StringBuilder

則不會。所以在大量字符串拼接或頻繁對某一字符串進(jìn)行操作時最好使用StringBuilder,不要使用String

如果要操作一個不斷增長的字符串,盡量不用String類,改用StringBuilder類。兩個類的工作原理不同:String類是一種傳統(tǒng)的修改字符串的方式,它確實可以完成把一個字符串添加到另一個字符串上的工作沒錯,但是在.NET框架下,這個操作實在是劃不來。因為系統(tǒng)先是把兩個字符串寫入內(nèi)存,接著刪除原來的String對象,然后創(chuàng)建一個String對象,并讀取內(nèi)存中的數(shù)據(jù)賦給該對象。這一來二去的,耗了不少時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,能夠在已有對象的原地進(jìn)行字符串的修改,簡單而且直接。當(dāng)然,一般情況下覺察不到這二者效率的差異,但如果你要對某個字符串進(jìn)行大量的添加操作,那么StringBuilder類所耗費(fèi)的時間和String類簡直不是一個數(shù)量級的。字符串的處理練習(xí)課上練習(xí)1:接收用戶輸入的字符串,將其中的字符以與輸入相反的順序輸出。"abc"→"cba"課上練習(xí)2:接收用戶輸入的一句英文,將其中的單詞以反序輸出。"hellocsharp"→"sharpchello"課上練習(xí)3:從Email中提取出用戶名和域名:。課上練習(xí)4:文本文件中存儲了多個文章標(biāo)題、作者,標(biāo)題和作者之間用若干空格(數(shù)量不定)隔開,每行一個,標(biāo)題有的長有的短,輸出到控制臺的時候最多標(biāo)題長度10,如果超過10,則截取長度8的子串并且最后添加“...”,加一個豎線后輸出作者的名字。讓用戶輸入一句話,找出所有e的位置讓用戶輸入一句話,判斷這句話中有沒有邪惡,如果有邪惡就替換成這種形式然后輸出,如:老牛很邪惡,輸出后變成老牛很**;把{“諸葛亮”,”鳥叔”,”卡卡西”,”卡哇伊”}變成諸葛亮|鳥叔|卡卡西|卡哇伊,然后再把|切割掉總結(jié)字符串常用的方法;對象的引用(S)舉例:結(jié)構(gòu)版的Person的賦值與類版的Person的賦值int、decimal、bool、doublebyte枚舉結(jié)構(gòu)等類型(值類型)是傳遞拷貝;對象(引用類型)則是傳遞引用。方法間傳遞對象String引用類型數(shù)組類結(jié)構(gòu)如果寫構(gòu)造函數(shù)那么就要把結(jié)構(gòu)中所有的字段全部賦值如果在結(jié)構(gòu)中寫了構(gòu)造函數(shù),那么默認(rèn)的構(gòu)造函數(shù)還有,和類不同在類中寫了有參數(shù)的構(gòu)造函數(shù),無參數(shù)的構(gòu)造函數(shù)直接被干掉了并且在類中的構(gòu)造函數(shù)中可以不用把所有字段都賦值

堆和棧的區(qū)別(*)棧是編譯期間就分配好的內(nèi)存空間,因此你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數(shù)等都在棧內(nèi)存中。堆是程序運(yùn)行期間動態(tài)分配的內(nèi)存空間,你可以根據(jù)程序的運(yùn)行情況確定要分配的堆內(nèi)存的大小。值類型和引用類型的區(qū)別1.將一個值類型變量賦給另一個值類型變量時,將復(fù)制包含的值。引用類型變量的賦值只復(fù)制對對象的引用,而不復(fù)制對象本身。2.值類型不可能派生出新的類型:所有的值類型均隱式派生自System.ValueType。但與引用類型相同的是,結(jié)構(gòu)也可以實現(xiàn)接口。3.值類型不可能包含null值:4.每種值類型均有一個隱式的默認(rèn)構(gòu)造函數(shù)來初始化該類型的默認(rèn)值。.net中哪些是值類型?哪些是引用類型?數(shù)組:int[],string[]數(shù)組接口:interface接口自定義類:class字符串:string基類:System.Object類引用類型結(jié)構(gòu):struct結(jié)構(gòu)類型枚舉:enum枚舉類型布爾型:bool字符型:char浮點型:float長整型:long整型:int基本數(shù)據(jù)類型值類型描述類別為什么要繼承分別寫一個Teacher類和一個Student的類,分析他們應(yīng)該有哪些屬性和方法.假如系統(tǒng)還要再加入班主任類、校長類(Principal)、家長類......試分析這幾個類的屬性?代碼冗余,怎么解決?冗余的解決方案繼承的符號:利用繼承實現(xiàn)Student類和Teacher類繼承自Person類.Student類和Teacher類繼承父類的屬性和方法.Student類和Teacher類還有自己獨有的屬性和方法.繼承的使用(S)classStudent:Person{......};classTeacher:Person{......};子類繼承了父類的成員,子類還可以有自己的成員.Person叫做父類(基類)Student和Teacher叫子類(派生類)Student繼承了Person類Person類派生了Teacher類在c#中,所有的類都直接或間接的繼承自了object類.(當(dāng)我們定義一個類的時候,如果沒有寫:繼承一個類,那么這個類就繼承了object類)練習(xí):寫一個Reporter類和一個Programmer類,Driver類,他們都有一個打招呼的方法,不同的是Reporter打招呼是

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論