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)的內容,更多相關內容請關注PHP中文網(www.php.cn)!