<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 類(C# 編程指南) “類”是一種構造,通過使用該構造,您可以將其他類型的變量、方法和事件組合在一起,從而創建自己的自定義類型。類就像一個藍圖,它定義類型的數據和行為。如果類沒有聲明為靜態類,客戶端代碼就可以創建賦給變量的“對象”或“實例”,從而使用該類。在對變量的所有引用都超出范圍之前,該變量始終保持在內存中。所有引用都超出范圍時,CLR 將標記該變量以供垃圾回收。如果類聲明為[靜態](https://msdn.microsoft.com/zh-CN/library/98f28cdx.aspx)類,則內存中只存在一個副本,并且客戶端代碼只能通過該類自身而不是“實例變量”訪問該類。有關更多信息,請參見[靜態類和靜態類成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/79b3xss3.aspx)。 與結構不同,類支持“繼承”,而繼承是面向對象編程的基礎特性。有關更多信息,請參見[繼承(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173149.aspx)。 ## 聲明類 類使用 [class](https://msdn.microsoft.com/zh-CN/library/0b0thckt.aspx) 關鍵字進行聲明,如下面的示例所示: ``` public class Customer { //Fields, properties, methods and events go here... } ``` **class** 關鍵字前面是訪問級別。由于在該例中使用 [public](https://msdn.microsoft.com/zh-CN/library/yzh058ae.aspx),因此任何人都可以基于該類創建對象。類的名稱位于 **class** 關鍵字的后面。定義的其余部分是類的主體,用于定義行為和數據。類的字段、屬性、方法和事件統稱為“類成員”。 ## 創建對象 盡管有時類和對象可互換,但它們是不同的概念。類定義對象的類型,但它不是對象本身。對象是基于類的具體實體,有時稱為類的實例。 通過使用 [new](https://msdn.microsoft.com/zh-CN/library/51y09td4.aspx) 關鍵字(后跟對象將基于的類的名稱)可以創建對象,如下所示: ``` Customer object1 = new Customer(); ``` 創建類的實例后,將向程序員傳遞回對該對象的引用。在前面的示例中,object1 是對基于 Customer 的對象的引用。此引用引用新對象,但不包含對象數據本身。實際上,可以在根本不創建對象的情況下創建對象引用: ``` Customer object2; ``` 建議不要創建像這樣的不引用對象的對象引用,因為在運行時通過這樣的引用來訪問對象的嘗試將會失敗。但是,可以創建這樣的引用來引用對象,方法是創建新對象,或者將它分配給現有的對象,如下所示: ``` Customer object3 = new Customer(); Customer object4 = object3; ``` 此代碼創建了兩個對象引用,它們引用同一個對象。因此,通過 object3 對對象所做的任何更改都將反映在隨后使用的 object4 中。由于基于類的對象是按引用來引用的,因此類稱為引用類型。 ## 類繼承 繼承是通過使用“派生”來實現的,而派生意味著類是使用“基類”聲明的,它的數據和行為從基類繼承。通過在派生的類名后面追加冒號和基類名稱,可以指定基類,如下所示: ``` public class Manager : Employee { // Employee fields, properties, methods and events are inherited // New Manager fields, properties, methods and events go here... } ``` 當類聲明基類時,它繼承基類除構造函數以外的所有成員。 與 C++ 不同,C# 中的類只能直接從一個基類繼承。但是,因為基類自身也可能繼承自另一個類,所以類可以間接繼承多個基類。而且,一個類可以直接實現一個以上的接口。有關更多信息,請參見[接口(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173156.aspx)。 類可以聲明為[抽象](https://msdn.microsoft.com/zh-CN/library/sf985hc5.aspx)類。抽象類包含具有簽名定義但沒有實現的抽象方法。抽象類不能進行實例化。只能通過實現抽象方法的派生類使用抽象類。相比之下,[密封](https://msdn.microsoft.com/zh-CN/library/88c54tsw.aspx)類不允許其他類從其派生。有關更多信息,請參見[抽象類、密封類及類成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173150.aspx)。 類定義可在不同的源文件之間進行拆分。有關更多信息,請參見[分部類和方法(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/wa80x488.aspx)。 ## 描述 下面的示例中定義了一個公共類,其中包含一個字段、一個方法和一個稱為構造函數的特殊方法。有關更多信息,請參見[構造函數(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ace5hbzh.aspx)。然后使用 **new** 關鍵字將該類實例化。 ``` public class Person { // Field public string name; // Constructor that takes no arguments. public Person() { name = "unknown"; } // Constructor that takes one argument. public Person(string nm) { name = nm; } // Method public void SetName(string newName) { name = newName; } } class TestPerson { static void Main() { // Call the constructor that has no parameters. Person person1 = new Person(); Console.WriteLine(person1.name); person1.SetName("John Smith"); Console.WriteLine(person1.name); // Call the constructor that has one parameter. Person person2 = new Person("Sarah Jones"); Console.WriteLine(person2.name); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } // Output: // unknown // John Smith // Sarah Jones ``` ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [C# 編程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.aspx) [面向對象的編程(C# 和 Visual Basic)](https://msdn.microsoft.com/zh-CN/library/dd460654.aspx) [多態性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173152.aspx) [成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173113.aspx) [方法(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173114.aspx) [構造函數(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ace5hbzh.aspx) [析構函數(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/66x5fx1b.aspx) [對象(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173110.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看