<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 類和結構(C# 編程指南) 類和結構是 .NET Framework 中的常規類型系統的兩種基本構造。兩者在本質上都屬于數據結構,封裝著一組整體作為一個邏輯單位的數據和行為。數據和行為是該類或結構的“成員”,它們包含各自的方法、屬性和事件等(本主題后面列出了這些內容)。 類或結構的聲明類似于藍圖,用于在運行時創建實例或對象。如果定義一個名為 Person 的類或結構,則 Person 為類型名稱。如果聲明并初始化 Person 類型的變量 p,則 p 稱為 Person 的對象或實例。可以創建同一 Person 類型的多個實例,每個實例在其屬性和字段中具有不同的值。 類是一種“引用類型”。創建類的對象時,對象賦值到的變量只保存對該內存的引用。將對象引用賦給新變量時,新變量引用的是原始對象。通過一個變量做出的更改將反映在另一個變量中,因為兩者引用同一數據。 結構是一種值類型。創建結構時,結構賦值到的變量保存該結構的實際數據。將結構賦給新變量時,將復制該結構。因此,新變量和原始變量包含同一數據的兩個不同的副本。對一個副本的更改不影響另一個副本。 類通常用于對較為復雜的行為建模,或對要在創建類對象后進行修改的數據建模。結構最適合一些小型數據結構,這些數據結構包含的數據以創建結構后不修改的數據為主。 有關更多信息,請參見[類(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/x9afc042.aspx)、[對象(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173110.aspx)和[結構(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/saxz13w4.aspx)。 下面的示例在 ProgrammingGuide 命名空間的頂級使用三個成員定義了 MyCustomClass。在 Program 類的 Main 方法中創建了 MyCustomClass 的一個實例(對象),并使用點表示法訪問該對象的方法和屬性。 ``` namespace ProgrammingGuide { // Class definition. public class MyCustomClass { // Class members: // Property. public int Number { get; set; } // Method. public int Multiply(int num) { return num * Number; } // Instance Constructor. public MyCustomClass() { Number = 0; } } // Another class definition. This one contains // the Main method, the entry point for the program. class Program { static void Main(string[] args) { // Create an object of type MyCustomClass. MyCustomClass myClass = new MyCustomClass(); // Set the value of a public property. myClass.Number = 27; // Call a public method. int result = myClass.Multiply(4); } } } ``` ## 封裝 “封裝”有時被稱為面向對象的編程的第一個支柱或原則。根據封裝的原則,類或結構可以指定其每個成員對于該類或結構外部的代碼的可訪問性。可將無意在類或程序集外部使用的方法和變量隱藏起來,以減小編碼錯誤或遭惡意利用的可能性。 有關類的更多信息,請參見[類(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/x9afc042.aspx)和[對象(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173110.aspx)。 ### 成員 所有方法、字段、常量、屬性和事件都必須在類型內部進行聲明;這些稱為類型的“成員”。與其他一些語言不同的是,C# 中沒有全局變量或方法。即使是作為程序入口點的 Main 方法也必須在類或結構內部進行聲明。下表列出了可在類或結構中聲明的所有不同種類的成員。 * [字段](https://msdn.microsoft.com/zh-CN/library/ms173118.aspx) * [常量](https://msdn.microsoft.com/zh-CN/library/ms173119.aspx) * [屬性](https://msdn.microsoft.com/zh-CN/library/x9fsa0sw.aspx) * [方法](https://msdn.microsoft.com/zh-CN/library/ms173114.aspx) * [構造函數](https://msdn.microsoft.com/zh-CN/library/ace5hbzh.aspx) * [析構函數](https://msdn.microsoft.com/zh-CN/library/66x5fx1b.aspx) * [事件](https://msdn.microsoft.com/zh-CN/library/awbftdfh.aspx) * [索引器](https://msdn.microsoft.com/zh-CN/library/6x16t2tx.aspx) * [運算符](https://msdn.microsoft.com/zh-CN/library/ms173145.aspx) * [嵌套類型](https://msdn.microsoft.com/zh-CN/library/ms173120.aspx) ### 輔助功能 有些方法和屬性要供類或結構外部的代碼(稱為“客戶端代碼”)調用或訪問。另有一些方法和屬性可能僅供類或結構在自身內部使用。應限制您的代碼的可訪問性,只允許應當訪問它們的客戶端代碼進行訪問,這一點十分重要。使用訪問修飾符 [public](https://msdn.microsoft.com/zh-CN/library/yzh058ae.aspx)、[protected](https://msdn.microsoft.com/zh-CN/library/bcd5672a.aspx)、[internal](https://msdn.microsoft.com/zh-CN/library/7c5ka91b.aspx)、**protected internal** 和 [private](https://msdn.microsoft.com/zh-CN/library/st6sy9xe.aspx) 可以指定類型及其成員對于客戶端代碼的可訪問性。默認可訪問性為 **private**。有關詳細信息,請參閱 [訪問修飾符(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173121.aspx)。 ### Inheritance 類(而非結構)支持繼承的概念。派生自另一個類(“基類”)的類將自動包含基類除構造函數和析構函數之外的所有公共、受保護和內部成員。有關更多信息,請參見[繼承(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173149.aspx)和[多態性(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173152.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/ms173156.aspx)。 ### 泛型類型 可以使用一個或多個類型參數來定義類和結構。客戶端代碼在創建類型的實例時提供類型。例如,[System.Collections.Generic](https://msdn.microsoft.com/zh-CN/library/system.collections.generic.aspx) 命名空間中的 [List&lt;T&gt;](https://msdn.microsoft.com/zh-CN/library/6sh2ey19.aspx) 類使用一個類型參數進行定義。客戶端代碼創建 List&lt;string&gt; 或 List&lt;int&gt; 的實例來指定列表中將包含的類型。有關詳細信息,請參閱 [泛型(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/512aeb7t.aspx)。 ### 靜態類型 可以將類(不是結構)聲明為[靜態](https://msdn.microsoft.com/zh-CN/library/98f28cdx.aspx)。靜態類只能包含靜態成員,不能使用 new 關鍵字進行實例化。在程序加載時,靜態類的一個副本將加載到內存中,可通過類名稱訪問該類的成員。類和結構都可以包含靜態成員。有關詳細信息,請參閱 [靜態類和靜態類成員(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/79b3xss3.aspx)。 ### 嵌套類型 類或結構可以嵌套在其他類或結構中。有關更多信息,請參見[嵌套類型](https://msdn.microsoft.com/zh-CN/library/ms173120.aspx)。 ### 分部類型 可以在一個代碼文件中定義類、結構或方法的一部分,而在另一個代碼文件中定義另一部分。有關更多信息,請參見[分部類和方法](https://msdn.microsoft.com/zh-CN/library/wa80x488.aspx)。 ### 對象初始值設定項 可以實例化和初始化類或結構對象以及對象的集合,無需顯式調用其構造函數。有關更多信息,請參見[對象和集合初始值設定項(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/bb384062.aspx)。 ### 匿名類型 在不方便或沒必要創建命名類的情況下,例如當使用無需保留或傳遞給其他方法的數據結構填充列表時,可以使用匿名類型。有關更多信息,請參見[匿名類型(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/bb397696.aspx)。 ### 擴展方法 通過創建一個單獨的類型,然后將該類型的方法當作原始類型的方法來調用,可以在不必創建派生類的情況下對類進行“擴展”。有關更多信息,請參見[擴展方法(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/bb383977.aspx)。 ### 隱式類型化局部變量 在類或結構方法中,可以使用隱式類型來指示編譯器在編譯時確定正確的類型。有關更多信息,請參見[隱式類型的局部變量(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/bb384061.aspx)。 ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [C# 編程指南](https://msdn.microsoft.com/zh-CN/library/67ef8sbd.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>

                              哎呀哎呀视频在线观看