標籤:使用 io 檔案 ar 問題 new .net har
C#物件導向是相對於面向過程而言的,面向過程強調的是功能行為,完成任務由多個方法完成;物件導向將功能進行封裝,完成任務由對象來完成.物件導向不是取代面向過程的,而是思想的轉變.過去做事情總是"親力親為";事事具細,現在有了成績當老闆了,把事情交給手下去做.
1.什麼是類、
是一類事物的總稱,一個模板;是虛構的;抽象的;不存在的.
2.什麼是對象
是實實在在的個體,是類的執行個體化.
3.如何執行個體化一個對象
通過類產生對象,叫做聲明一個對象;執行個體化一個對象。文法:類名 執行個體名(變數名)=new 類名();比如Person ps=new Person();,這樣就完成一個對象的聲明;注意=前面是聲明一個對象名(變數名),後面的才是開闢一塊記憶體空間,真正執行個體化了,才說明ps在電腦中實實在在存在的。當然也必須是執行個體化之後.通過對象名.屬性名稱;對象名.方法名()調用類的屬性和方法.注意:類不佔系統記憶體,對象才占記憶體.
4.靜態類的訪問
有static修飾的類,不需要執行個體化,直接類名.屬性名稱和類名.方法名即可訪問類的屬性和方法了.靜態類,不能被new的類就是靜態類,常用來實現函數庫
5.存取修飾詞
屬性和方法:public代表公有的,可以在任何地方被訪問;internal代表只能在本項目中被訪問;protected是受保護的意思,只能在本類和子類中被訪問;private指私人的,只能在本類中被訪問。預設是private修飾符。
類:public代表公有,可以在任何地方被訪問;protected是受保護的意思,只能在本類和子類中被訪問。internal代表是只能在項目中被訪問。預設是internal。
6.屬性
如果在方法中定義了一個變數,這個變數有get或set方法,那麼這個變數就有對應的屬性,為什麼是說對應的?因為變數往往是由public修飾的,來保護一個由private修飾的私人變數。這樣外界只能通過屬性來訪問,保護了那個私人變數。 比如:private int age; public int Age { get { return age} ; set {age=value; } }。這個Age就是屬性,外界可以訪問Age,但無法訪問age,保護了age欄位。設定屬性可以通過“右擊欄位”,然後選擇“重構”,“封裝欄位”即可完成。Ctrl+R,E快速鍵功能.屬性分為讀寫(含get和set方法)、唯讀(只含get方法)和唯寫(只含set方法),根據實際需要來設定相應的屬性即可.
7.自動屬性
屬性的本質就是方法;由get與set方法組成.所謂自動屬性,就是只有屬性沒有欄位,這時系統會自動為我們產生一個只有屬效能訪問的私人欄位.此時要注意get與set方法只能成對使用;如果只有get,就沒有辦法賦值,同樣的道理只有set;就沒辦法讀取,單單只有get,或只有set是沒有意義的.實際上這時系統會報錯.
8.構造方法
文法: [存取修飾詞public] 名(和類同名,沒有返加值){}.
作用:建立對象執行個體化對象,給類的成員賦初值.
好處:<1.可以對多個屬性或欄位進行賦值;不需要重複寫執行個體名<2.保證使用者在建立對象時必須對指定的成員賦初值<3.可以對唯讀屬性進行賦值.
參數:系統自動產生的;預設的構造方法是無參的,當使用者自訂了建構函式;系統的預設的建構函式就會自動消失.為了保證不會出錯,我們可以手動添加一個無參的方法.構造方法可以重載,就是說可以有多個參數的構造方法.
9.繼承(:)
定義類時不指定父類,則父類就是Object類.Object類是任何類直接或間接的父類.繼承都是單繼承,只能繼承自一個類.
子類繼承父類的屬性和方法,也可以有自己的特定屬性與方法.在調用子類成員時;程式會先調用父類的構造方法給成員初始化,之後再執行子類的執行個體化方法.
10.索引器
定義索引器的方式:
string this[int index]{get{return "";}set{""=value;}},string為索引器的類型;[]中是參數列表,用set方法通過Value得到使用者給定的值;用get方法讀取值. 索引器的參數可以不止一個,類型也不限於int;幾乎是任意類型.
11.Params可變參數
在方法的類型前加params參數,就成為可變參數.調用時傳一個或幾個相同類型的值後,這個方法會把值自動放入相同類型的數組中.
如Test( params int[] arry),但方法如果有多個相同型別參數時params所修飾的參數;必須放最後面.(如Test(int age, params int[] arry))
12.命名空間
命名空間用於解決類的重名問題;可以看做類的“檔案夾”(理解的意義),被使用的類如果在同一namespce命名空間下;則不需要引入.如果不在同一命名空間下則需要引入.有以下兩種方法:
<1.寫全稱(類名.方法名)
<2.先using引入命名空間,再調用.
13.解構函式
析構方法是用來手動清理記憶體資源的,不過C#中有記憶體回收行程會不定時清理記憶體資源。
注意點:解構函式只能定義在類中,不能在結構中定義使用析構方法.一個類中只能有一個析構方法,並且不允許重載;無法繼承或重載解構函式;無法調用解構函式;是自動被調用的,並且解構函式沒有修飾符、參數。比如 ~類名 {} ,這就是一個解構函式。
14.字串
1.字串可以看做char的唯讀數組,遍曆char數組輸出字串內容;但不能直接通過下標修改字串內容,所以說它是唯讀。
2.字串的一個特性:不可變性.字串一旦聲明就不可改變.所以只能讀取;不能通過索引直接修改.
3.間接修改:
通過ToCharArray()方法複製得到新的Char數組,修改後調用new string(char[])構造方法建立新的字串對象.
4.string是C#中的字串,而String是.Net Framwork中的字串,實際上是一樣的.
5.字串常用方法
<1.Equals()比較兩個字串是否相同(==).
<2.Split()字串分割,根據要求對字串分割;注意Split()的第三個重載方法;第二個參string.SplitStringOptions.RempveEmptyEntries是將分割之後的數組中的空格刪除掉。
<3.SubString()字串的載取.
<4.IndexOf()返回指定字元的索引。
<5.ToLower()和ToUpper()得到字串的小寫或大寫形式,注意方法也不會改變字串原來的值,只是通過方法產生一個新的字串.
<6.Replace()替換指定的字元
<7.Compare()比較兩個字串大小(按ascii順序比較),返回0則相等;返回-1第一個字串小於第二個字串;返加1第一個字串大於第二個字串
<8.Contains()判斷字串是否存在,返加一個true或false.