国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 02:37:15
字體:
來源:轉載
供稿:網友
C#基礎知識整理:C#類和結構(1)

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(); } }}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(); } } 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(); } }www.2cto.com(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)、嵌套類型可以是分部的,即使它們所嵌套于的類型本身并不是分部的也如此。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德惠市| 东兴市| 新昌县| 太仓市| 怀安县| 鹤峰县| 侯马市| 泰顺县| 沅江市| 漳平市| 绍兴市| 宣汉县| 平谷区| 汶川县| 蓬莱市| 浪卡子县| 江源县| 玛沁县| 莒南县| 赤峰市| 当雄县| 鹰潭市| 海林市| 乐至县| 博湖县| 元阳县| 山西省| 嵊泗县| 博罗县| 东城区| 永登县| 罗定市| 浪卡子县| 新余市| 合山市| 广西| 冷水江市| 扎赉特旗| 庆元县| 蒲城县| 定南县|