[C#, CSharp, C Sharp 教學教程教材Tutorial] 類別成員(Class ...

文章推薦指數: 80 %
投票人數:10人

例如車子有欄位:顏色、車門數量; 例如車子有方法:發動引擎、加速、刹車; 範例: class 類別 { public string 欄位; public void 方法( ) { } }. C#中將類別成員分 ... [C#,CSharp]類別成員 類別成員的種類 類別的成員可以大概分成方法(method)和欄位(Field) 例如車子有欄位:顏色、車門數量 例如車子有方法:發動引擎、加速、刹車 class類別 { publicstring欄位; publicvoid方法(){} } C#中將類別成員分為10種 類別成員 說 明 範例 常數(Const)與類別相關,且不可更改的常數值 const型別常數; 欄位(Field)類別的變數,實體化後代表物件的狀態 型別欄位; 方法(Method)類別可執行的動作,實體化後代表物件的行為 回傳型別方法(){XXX} 屬性(Property)有取得(get)及設定(set)的欄位 型別欄位; 型別屬性 { get{return欄位;} set{this.欄位=value;} } 索引子(Indexer)使類別具有像陣列的索引功能 型別[]陣列=new型別[大小]; public型別this[inti] { get{return陣列[i];} set{陣列[i]=value;} } 事件(Event)使類別可以在指定的事情發生時進行對應的處理 intcount; void事件處理方法(objectsender,EventArgse) { count++; } void事件設定() { List列表=newList(); 列表.Changed+=newEventHandler(事件處理方法); } 運算子(Operator)讓類別支援特定運算子,以便進行運算 publicstatic類別operator+(類別左值,類別右值) { 類別物件=new物件(); 物件.欄位=左值.欄位+右值.欄位; return物件; } 建構函式(Constructor)類別實體化成物件時,進行初始化的操作 public類別(){XXX} 解構函式(Destructor)類別實體化成物件後,物件不再被使用時,對佔用的資源做釋放 ~類別(){XXX} 型別(InnerClass)巢狀類別 class型別{XXX} class類別 { const型別常數;//常數 型別欄位;//欄位 回傳型別方法(){XXX}//方法 型別屬性//屬性 { get{return欄位;} set{this.欄位=value;} } 型別[]陣列=new型別[大小];//索引子 public型別this[inti] { get{return陣列[i];} set{陣列[i]=value;} } intcount;//事件 void事件處理方法(objectsender,EventArgse){count++;} void事件設定() { List列表=newList(); 列表.Changed+=newEventHandler(事件處理方法); } publicstatic類別operator+(類別左值,類別右值)//運算子 { 類別物件=new物件(); 物件.欄位=左值.欄位+右值.欄位; return物件; } public類別(){XXX}//建構函式 ~類別(){XXX}//解構函式 class型別{XXX}//型別 } Δ回到最上方 簽章(Signature) 簽章(Signature):編譯器用來識別程式的識別字之基準 即使方法的名稱相同,只要其簽章在類別、結構和介面中是唯一的,都可通過編譯 簽章讓類別、結構和介面的方法(method)可以多載 相同名稱的函式,參數也相同簽章相同 相同名稱的函式,參數不相同簽章不同 類別的簽章: 命名空間 類別名稱 方法的簽章: 方法名稱 型別參數的數目 參數的型別和類型 ref及out參數修飾詞屬於簽章的一部份 方法簽章不包含回傳型別、參數名稱、存取修飾詞 publicvoid方法();//X簽章相同 privatevoid方法();//X簽章相同 publicvoid方法(inta,intb);//O簽章不同 publicvoid方法(inta,intb,intc);//O簽章不同 privatevoid方法(stringa,stringb);//O簽章不同 Δ回到最上方 實體成員 實體欄位、實體方法:如果方法或欄位為物件各別所有,就叫實體欄位或實體方法 同一個類別實體化形成的物件,每個物件都擁有各自的實體欄位 類別一定要實體化成物件,才可對實體欄位、實體方法進行操作 例如有一張房子的設計圖,實際蓋成房子時,一棟可能漆成紅色,另一棟可能漆成藍色,所以"房子牆面的顏色"就是實體欄位 class類別 { string實體欄位; publicvoid實體方法(){} } Δ回到最上方 類別成員(靜態成員) 類別欄位、類別方法:如果方法或欄位為類別共有的,就叫類別欄位或類別方法 類別欄位也叫做類別變數(ClassVariable)或靜態變數(StaticVariable) 同一個類別的類別欄位、類別方法是共用的,不會因實體不同而有不同 C#中,類別不需要實體化成物件,即可使用類別欄位、類別方法 因為不需實體,所以類別方法中不可以使用實體欄位及方法 在C#中,類別欄位或方法需加上static關鍵字來區分 例如Honda出了CRV系列車款,假設"這款車都是使用鋁圈",設計CRV類別時就可將"鋁圈"宣告為類別欄位 class類別 { staticint類別欄位; publicstaticvoid類別方法(){} } 實體欄位、實體方法、類別欄位、類別方法: class類別 { staticint類別欄位; string實體欄位; publicstaticvoid類別方法(){ } publicvoid方法(){ } } Δ回到最上方 成員存取運算子 要存取物件的方法或欄位時,要使用.運算子 物件.欄位; 物件.方法(); class類別A { publicstring欄位; publicvoid方法(){} } class類別B { 類別A物件A=new類別A(); 物件A.欄位="";//使用.運算子設定欄位值 物件A.方法();//使用.運算子執行方法 } Δ回到最上方 類別成員的存取範圍 C#的類別成員存取範圍可以分為5類: 範圍 存取修飾詞 說  明 可修飾對象 最大public沒有限制類別、列舉、結構、介面、建構函式、方法、欄位、屬性  次大protected類別內部,或類別的子類別及其衍生類別(子、子孫、...類別)列舉、結構、介面、建構函式、方法、欄位、屬性 小internal目前類別所屬的組件範圍內(dll),即類別所屬的程式內皆可存取,其它程式則不允許列舉、結構、介面、建構函式、方法、欄位、屬性  次小protectedinternal目前類別所屬的組件範圍內(dll),及其衍生類別(子、子孫、...類別)列舉、結構、介面、建構函式、方法、欄位、屬性  最小private只有目前類別內部可以存取列舉、結構、介面、建構函式、方法、欄位、屬性 如果類別成員宣告時沒有指定存取修飾詞,則相當於private class類別 { string私有欄位; } 私有的類別成員只有類別自己內部可以使用,而公開的成員則是別的類別也可以對其進行操作 例如一台電視,其內部的IC和映像管就是private,只有它自己可以使用,而電視外面的開關或按鈕則是public,可以讓使用者操控電視 class類別A { privatestring私有欄位; publicstring公開欄位; privatestring私有方法() { return"Hello"; } publicstring公開方法() { string私有方法的回傳值=私有方法(); 公開欄位=私有方法的回傳值; return私有欄位; } } class類別B { publicvoid方法() { 類別A物件A=new類別A(); 物件A.公開欄位="World"; 物件A.公開方法(); } } readonly關鍵字 readonly關鍵字只能用來修飾欄位,使欄位具有唯讀的特性 用readonly宣告的欄位,只能在宣告時或該類別的建構函式內指派其值 class類別 { readonlypublicstring唯讀欄位1="A"; publicreadonlystring唯讀欄位2=唯讀欄位1+"B"; publicstaticreadonlystring唯讀欄位3=唯讀欄位1+"BC"; public類別() { 唯讀欄位1="C"; 唯讀欄位2="D"; } } class類別 { readonlypublicstring唯讀欄位="A"; publicstaticreadonlystring靜態唯讀欄位=唯讀欄位1+"B"; publicvoid方法() { 唯讀欄位="C";//X唯讀欄位只能在宣告時或建構函式指派其值 } public類別() { 靜態唯讀欄位="D";//X 靜態唯讀欄位只能在宣告時或靜態建構函式指派其值 } } const、readonly、staticconst、staticreadonly比較 項目constreadonlystaticreadonly 預設即為靜態是不是是  宣告時指派值可可可  一般建構函式指派值不可可不可  靜態建構函式指派值可不可可  靜態建構函式指派值可不可可  參考型別的值string及null皆可可  宣告時指派為其它實體欄位的值不可可可  宣告時指派為其它類別欄位的值不可可可  值的設定時機編譯時執行時執行時  Δ回到最上方 Copyright©YehYeh.Allrightsreserved.



請為這篇文章評分?