C#基礎知識整理:C#類和結構(1)

來源:互聯網
上載者:User
1、結構功能特性? 實現代碼?
結構用struct關鍵字定義的,與類類似,但有本質區別。結構實質是一個實值型別,它不需要對分配的。
結構的特性:
(1)、結構作為參數傳遞時,是值傳遞。
(2)、結構的建構函式必須帶參數的。
(3)、結構執行個體化可以不用new的。
(4)、結構不能繼承,但是可以實現介面。
(5)、結構中不能初始化執行個體欄位。
例:

using System;using System.Collections.Generic;using System.Text;namespace TestStruct{    class Program    {        public struct Circle     //定義一個圓        {            private const double pi = 3.1415926;            public double radius;  //半徑            /// <summary>            /// 建構函式            /// </summary>            public Circle(double r)            {                radius = r;            }            /// <summary>            /// 面積            /// </summary>            public double CArea()            {                return 3.14 * radius * radius;            }        }        static void Main(string[] args)        {            Circle circle1;    //不用new執行個體化            circle1.radius = 5;            Console.WriteLine("圓面積為:" + circle1.CArea());            Circle circle2 = new Circle(1);  //用new執行個體化            Console.WriteLine("圓面積為:" + circle2.CArea());            Console.ReadLine();        }    }}

2、什麼是委託? 特點? 何時使用委託而不使用介面? 如何聲明、執行個體化和使用委託?

(1)、委託是一個類,它定義了方法的類型,可以講方法當做另一個方法的參數。避免在程式中使用分支,

程式擴充性更好。
例子:

  class Program    {        public delegate void PrinteDelegate(string name);        private static void PrinteEnglish(string name)        {            Console.WriteLine("Your Name: " + name);        }        private static void PrinteChinese(string name)        {            Console.WriteLine("你的大名: " + name);        }        private static void Printe(string name, PrinteDelegate MakeGreeting)        {            MakeGreeting(name);        }        static void Main(string[] args)        {            Printe("Sam Young", PrinteEnglish);            Printe("白楊樹", PrinteChinese);            Console.ReadLine();        }    }

(2)、委託類似於 C++ 函數指標,但它是型別安全的。

委託允許將方法作為參數進行傳遞。

委託可用於定義回調方法。

委託可以連結在一起;例如,可以對一個事件調用多個方法。

方法不需要與委託簽名精確匹配。有關更多資訊,請參見協變和逆變。

C# 2.0 版引入了匿名方法的概念,此類方法允許將代碼塊作為參數傳遞,以代替單獨定義的方法。

使用委託,我覺得應該在需要分支調用不同方法時使用。但是例如原廠模式中,根據分支執行個體化不同的類

,這時就用介面。


委託是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動

態地賦給參數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴

展性。

3、什麼是部分類/部分類別? 哪些功能特性? 實現代碼? 適用場合? 需遵循幾個規則?
部分類別就是將一個類用partial關鍵字,分成好幾個獨立檔案,但實質還是一個類。一般當一個類行數太多或者某些功能比較獨立可以用部分類別,最常見就是表單Form.cs和Form.designer.cs。
一般需遵循如下規則:
(1)、必須使用partial 關鍵字

(2)、雖然有不同的部分,但是各個部分必須具有相同的可訪問性,如public、private 等

(3)、如果將任意部分聲明為抽象的、密封的,則整個類型都被視為抽象的、密封的

(4)、如果任意部分聲明繼承基類時,則整個類型都將繼承該類

(5)、 各個部分可以指定不同的基底介面,最終類型將實現所有分部聲明所列出的全部介面

(6)、在某一分部定義中聲明的任何類、結構或介面成員可供所有其他部分使用

(7)、巢狀型別可以是分部的,即使它們所嵌套於的類型本身並不是分部的也如此。

以上就是C#基礎知識整理:C#類和結構(1)的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.