類別

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

類別是使用 class 關鍵字來宣告,後面接著唯一識別碼,如下列範例所示:. C# 複製. //[access modifier] - [class] - [identifier] public class ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 目錄 類別簡介 發行項 09/20/2022 1位參與者 本文內容 參考型別 定義為的class類型是class別。

在執行時間,當您宣告參考型別的變數時,該變數會包含值null,直到您使用new運算子明確建立類別的實例,或為它指派可能已在其他地方建立之相容型別的物件,如下列範例所示: //DeclaringanobjectoftypeMyClass. MyClassmc=newMyClass(); //Declaringanotherobjectofthesametype,assigningitthevalueofthefirstobject. MyClassmc2=mc; 建立物件時,會在受控堆積上配置足夠的記憶體給該特定物件,而變數只會保留該物件位置的參考。

配置以及由CLR的自動記憶體管理功能(也就是「記憶體回收」)回收Managed堆積上的類型時,都需要額外負荷。

不過,記憶體回收也已獲得高度最佳化,因此在大部分情況下並不會產生效能問題。

如需記憶體回收的詳細資訊,請參閱自動記憶體管理和記憶體回收。

宣告類別 類別是使用class關鍵字來宣告,後面接著唯一識別碼,如下列範例所示: //[accessmodifier]-[class]-[identifier] publicclassCustomer { //Fields,properties,methodsandeventsgohere... } class關鍵字的前面會加上存取層級。

因為在此情況下會使用,所以public任何人都可以建立這個類別的實例。

類別的名稱遵循class關鍵字。

類別名稱必須是有效的C#識別碼名稱。

定義的其餘部分是定義行為和資料的類別主體。

類別上的欄位、屬性、方法和事件統稱為「類別成員」。

建立物件 雖然它們有時會交換使用,但是類別和物件不同。

類別會定義一種類型的物件,但不是物件本身。

物件是根據類別的具體實體,而且有時稱為類別的執行個體。

您可以使用new關鍵字來建立物件,後面接著物件將依據的類別名稱,如下所示: Customerobject1=newCustomer(); 建立類別的執行個體時,會將物件的參考傳回給程式設計人員。

在上述範例中,object1是根據Customer之物件的參考。

這個參考參照新的物件,但不包含物件資料本身。

事實上,您可以建立物件參考,而根本不需要建立物件︰ Customerobject2; 我們不建議您建立物件參考,例如未參考物件的上一個物件參考,因為嘗試透過這類參考來存取物件將會在執行時間失敗。

不過,您可以藉由建立新的物件,或為其指派現有的物件(如下所示),來參考物件: Customerobject3=newCustomer(); Customerobject4=object3; 這個程式碼會建立同時參照相同物件的兩個物件參考。

因此,任何透過object3進行的物件變更都會反映在後續使用object4時。

因為以傳址方式參照根據類別的物件,所以類別稱為參考型別。

類別繼承 類別完全支援「繼承」,這是物件導向程式設計的基礎特性。

當您建立類別時,可以繼承自任何其他未定義為sealed的類別,而其他類別可以繼承自您的類別,並覆寫類別虛擬方法。

此外,您可以執行一或多個介面。

使用「衍生」可完成繼承,這表示使用從中繼承資料和行為的「基底類別」來宣告類別。

附加冒號以及接著衍生類別名稱後面的基底類別名稱,以指定基底類別,與下面類似: publicclassManager:Employee { //Employeefields,properties,methodsandeventsareinherited //NewManagerfields,properties,methodsandeventsgohere... } 類別宣告基底類別時,會繼承基底類別的所有成員,但建構函式除外。

如需詳細資訊,請參閱繼承。

C#中的類別只能直接繼承自一個基類。

不過,因為基底類別本身可以繼承自另一個類別,所以類別可能會間接繼承多個基底類別。

此外,類別可以直接執行一或多個介面。

如需詳細資訊,請參閱介面。

可以abstract宣告類別。

抽象類別包含具有簽章定義但沒有實作的抽象方法。

無法具現化抽象類別。

它們僅用於實作抽象方法的衍生類別。

相較之下,sealed類別不允許從它衍生其他類別。

如需詳細資訊,請參閱抽象和密封類別和類別成員。

類別定義可以在不同的原始程式檔之間進行分割。

如需詳細資訊,請參閱部分類別和方法。

範例 下列範例定義了一個公用類別,其中包含自動實作屬性、方法以及稱為建構函式的特殊方法。

如需詳細資訊,請參閱屬性、方法和函式文章。

然後使用new關鍵字具現化類別的執行個體。

usingSystem; publicclassPerson { //Constructorthattakesnoarguments: publicPerson() { Name="unknown"; } //Constructorthattakesoneargument: publicPerson(stringname) { Name=name; } //Auto-implementedreadonlyproperty: publicstringName{get;} //Methodthatoverridesthebaseclass(System.Object)implementation. publicoverridestringToString() { returnName; } } classTestPerson { staticvoidMain() { //Calltheconstructorthathasnoparameters. varperson1=newPerson(); Console.WriteLine(person1.Name); //Calltheconstructorthathasoneparameter. varperson2=newPerson("SarahJones"); Console.WriteLine(person2.Name); //Getthestringrepresentationoftheperson2instance. Console.WriteLine(person2); } } //Output: //unknown //SarahJones //SarahJones C#語言規格 如需詳細資訊,請參閱c#語言規格。

語言規格是C#語法及用法的限定來源。

本文內容



請為這篇文章評分?