C#教程 第七課:類的入門

來源:互聯網
上載者:User
 

C #教程 第七課: 類的入門本節課將介紹C#中的類,其目的如下:
1.瞭解建構函式的實現
2.瞭解執行個體和靜態成員的區別
3.瞭解解構函式的使用
4.熟悉類的成員類型

在本教程的一開始,你就已經接觸到類的用法了。現在,既然已經對類有了感性認識,並知道如何定義一個類,本節課將

定義類的格式是:關鍵字"Class"後面跟著類名,類名之後的大括弧中包含的是類的成員。建構函式沒有傳回值,且與類同名。清單7-1是一個關於類的例子。

清單 7-1. Example C# Classes: Classes.cs
 
// Namespace Declaration
using System;
class OutputClass {
    string myString;
    public OutputClass(string inputString) {
      myString = inputString;
    }
 
    public void printString() {
Console.WriteLine("{0}", myString);}
 
~OutputClass() { }}
 
class ExampleClass {
   public static void Main() {
OutputClass outCl = new OutputClass("This is printed by the output class.") { }
outCl.printString();}}
 
說明
1.清單7-1 示範了兩個類。第一個類"OutputClass"包括:一個建構函式,一個執行個體方法,以及一個解構函式,還包括一個網域名稱"myString"。建構函式是用來初始化類的資料成員的。本例中,OutputClass類的建構函式接收一個字串參數,並把它拷貝到該類的myString域中。2.建構函式並不是一定要使用者自己定義的,例如ExampleClass類就用到了預設的建構函式。

預設的建構函式很簡單,且不帶參數。但這樣的建構函式並沒有多大用處。為了使得預設的建構函式能夠有些用途,使用者自己可以對它初始化。例如:

public OutputClass() : this("Default Constructor String") { }
這種形式的建構函式可以包含在清單7-1中的OutputClass類中。該預設的建構函式後跟著初始化符。分號":"標誌著初始化開始,後面的"this"是關鍵字,表示OutputClass這個類所對應的對象。this可以有效地調用該對象中的建構函式。"this"關鍵字後面的參數為字串類型。上面的初始化工作調用了OutputClass建構函式,該建構函式接收一個字串類型的資料作為參數。初始化工作確保在類的域能夠在類的執行個體化過程中被初始化。

上面的例子表明:一個類可以有多種格式的建構函式。具體調用哪一種建構函式取決於參數個數及參數類型。

類成員的類型
在C#中,有兩種類型的類成員,執行個體和靜態。每次定義類的對象時,就建立了該類的一個執行個體。ExampleClass中的 Main() 方法建立了OutputClass類的一個名為"outCl"的執行個體。你可以用不同的名字建立OutputClass類的多個執行個體。這些執行個體都是各自獨立的。例如,OutputClass類的兩個執行個體建立如下:

OutputClass oc1 = new OutputClass("OutputClass1");
OutputClass oc2 = new OutputClass("OutputClass2");
於是,建立了OutputClass類的兩個單獨的執行個體,且各內建有單獨的"myString"域和"printString()"方法。上例中,兩個執行個體名為"oc1" 和"oc2"。 另外一方面,如果類成員是靜態,可以通過如下格式來訪問: <classname>.<static class member>。

一旦OutputClass類有如下的靜態方法:


static void staticPrinter() {
Console.WriteLine("There is only one of me.");
}
你就可以用下面的方式,從Main()中調用該函數:
OutputClass.staticPrinter();
 
注意:
調用類的靜態成員必須通過類名而不是執行個體名。類的靜態成員的副本僅有一個。

另外一種類型的建構函式是靜態建構函式。 通過在建構函式名稱的前面使用關鍵字"static",就可以定義一個靜態建構函式。 調用靜態建構函式的發生時間是:在建立類的執行個體之前,在調用類的靜態成員之前,在調用衍生類別的靜態建構函式之前。(在後續課程中將介紹),且僅被調用一次。

OutputClass也有一個解構函式,除了前面加上了"~"符號,就跟建構函式的格式一樣。解構函式用於釋放類所佔用的資源。當C#垃圾搜集器決定把對象從記憶體中清除出去時,就會調用解構函式。

小結
現在,你已經瞭解了類的如下成員:域,方法,建構函式,解構函式。下面是類的完整的成員類型:

建構函式;解構函式;域;方法;屬性;索引;代理 ;事件;嵌套類

上面沒有介紹過的類型將在後續課程中講解。

概括地講,你現在已經學會了如何定義常規的和靜態建構函式,也瞭解了如何初始化類的域。如果沒有必要執行個體化一個對象,可以建立靜態類成員。你也瞭解了用來釋放資源的解構函式的用法。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.