成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#基礎(chǔ)知識討論

開發(fā) 后端
本文介紹C#基礎(chǔ)知識,包括密封類可以有虛函數(shù)嗎、接口可以包含哪些成員、類和結(jié)構(gòu)的區(qū)別和abstract 可以和 virtual 一起使用嗎等問題。

C#基礎(chǔ)知識之密封類可以有虛函數(shù)嗎?

可以,基類中的虛函數(shù)將隱式的轉(zhuǎn)化為非虛函數(shù),但密封類本身不能再增加新的虛函數(shù)

示例:

  1. class BaseClass {   
  2. public virtual void F(){   
  3. Console.WriteLine("BaseClass.F");  
  4. }   
  5. sealed class DeriveClass : BaseClass {  
  6. //基類中的虛函數(shù)F被隱式的轉(zhuǎn)化為非虛函數(shù)  
  7.  
  8. //密封類中不能再聲明新的虛函數(shù)G   
  9. public virtual void G(){   
  10. Console.WriteLine("DeriveClass.G");  
  11. }   

C#基礎(chǔ)知識之如果基類中的虛屬性只有一個屬性訪問器,那么繼承類重寫該屬性后可以有幾個屬性訪問器?如果基類中有 get 和 set 兩個呢?

如果基類中的虛屬性只有一個屬性訪問器,那么繼承類重寫該屬性后也應(yīng)只有一個。如果基類中有 get 和 set 兩個屬性訪問器,那么繼承類中可以只有一個也可以同時有兩個屬性訪問器。

C#基礎(chǔ)知識之a(chǎn)bstract 可以和 virtual 一起使用嗎?可以和 override 一起使用嗎?

abstract 修飾符不可以和 static、virtual 和 override 修飾符一起使用

C#基礎(chǔ)知識之接口可以包含哪些成員?

接口可以包含屬性、方法、索引指示器和事件,但不能包含常量、域、操作符、構(gòu)造函數(shù)和析構(gòu)函數(shù),而且也不能包含任何靜態(tài)成員

C#基礎(chǔ)知識之類和結(jié)構(gòu)的區(qū)別?

類:類是引用類型在堆上分配,類的實例進行賦值只是復(fù)制了引用,都指向同一段實際對象分配的內(nèi)存,類有構(gòu)造和析構(gòu)函數(shù),類可以繼承和被繼承

結(jié)構(gòu):結(jié)構(gòu)是值類型在棧上分配(雖然棧的訪問速度比較堆要快,但棧的資源有限放),結(jié)構(gòu)的賦值將分配產(chǎn)生一個新的對象。結(jié)構(gòu)沒有構(gòu)造函數(shù),但可以添加。結(jié)構(gòu)沒有析構(gòu)函數(shù),結(jié)構(gòu)不可以繼承自另一個結(jié)構(gòu)或被繼承,但和類一樣可以繼承自接口

示例:

根據(jù)以上比較,我們可以得出一些輕量級的對象***使用結(jié)構(gòu),但數(shù)據(jù)量大或有復(fù)雜處理邏輯對象***使用類。如:Geoemtry(GIS 里的一個概論,在 OGC 標準里有定義) ***使用類,而 Geometry 中點的成員***使用結(jié)構(gòu)

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace Example16 {   
  6. interface IPoint {   
  7. double X {   
  8. get;set;  
  9. }   
  10. double Y {   
  11. get;set;  
  12. } double Z {   
  13. get;set;  
  14. }   
  15. //結(jié)構(gòu)也可以從接口繼承struct Point: IPoint {   
  16. private double x, y, z;  
  17. //結(jié)構(gòu)也可以增加構(gòu)造函數(shù)  
  18. public Point(double X, double Y, double Z){   
  19. this.x = Xthis.y = Ythis.z = Z;  
  20. }   
  21. public double X { get { return x;   
  22. }   
  23. set { x = value;   
  24. }   
  25. }   
  26. public double Y {   
  27. get { return x;   
  28. }   
  29. set { x = value;   
  30. }   
  31. }   
  32. public double Z {   
  33. get { return x;   
  34. }   
  35. set { x = value;   
  36. }   
  37. }   
  38. //在此簡化了點狀Geometry的設(shè)計,實際產(chǎn)品中還包含Project(坐標變換)
    等復(fù)雜操作class PointGeometry {   
  39. private Point value;  
  40.  
  41. public PointGeometry(double X, double Y, double Z){   
  42. value = new Point(X, Y, Z);  
  43. }   
  44. public PointGeometry(Point value){   
  45. //結(jié)構(gòu)的賦值將分配新的內(nèi)存this.value = value;  
  46. }   
  47. public double X { get { return value.X;   
  48. }   
  49. set {   
  50. this.value.X = value;   
  51. }   
  52. }   
  53. public double Y { get { return value.Y;   
  54. }   
  55. set { this.value.Y = value;   
  56. }   
  57. }   
  58. public double Z { get { return value.Z;   
  59. } set { this.value.Z = value;   
  60. }   
  61. }   
  62. public static PointGeometry operator +(PointGeometry Left, PointGeometry Rigth){   
  63. return new PointGeometry(Left.X + Rigth.X, Left.Y + Rigth.Y, Left.Z + Rigth.Z);  
  64. }   
  65. public override string ToString(){   
  66. return string.Format("X: {0}, Y: {1}, Z: {2}", value.X, value.Y, value.Z);  
  67. }   
  68. class Program {   
  69. static void Main(string[] args){   
  70. Point tmpPoint = new Point(1, 2, 3);  
  71.  
  72. PointGeometry tmpPG1 = new PointGeometry(tmpPoint);  
  73. PointGeometry tmpPG2 = new PointGeometry(tmpPoint);  
  74. tmpPG2.X = 4tmpPG2.Y = 5tmpPG2.Z = 6;  
  75. //由于結(jié)構(gòu)是值類型,tmpPG1 和 tmpPG2 的坐標并不一樣Console.WriteLine(tmpPG1);  
  76. Console.WriteLine(tmpPG2);  
  77. //由于類是引用類型,對tmpPG1坐標修改后影響到了tmpPG3 PointGeometry tmpPG3 = tmpPG1;  
  78. tmpPG1.X = 7;  
  79. tmpPG1.Y = 8;  
  80. tmpPG1.Z = 9;  
  81. Console.WriteLine(tmpPG1);  
  82. Console.WriteLine(tmpPG3);  
  83. Console.ReadLine();  

【編輯推薦】

  1. C#結(jié)構(gòu)體的特點淺析
  2. 介紹C#窗體拖動事件
  3. C#讀取Excel遇到無法讀取的解決方法
  4. 概述C#.NET操作XML
  5. C#基礎(chǔ)概念學(xué)習(xí)筆記
責(zé)任編輯:佚名 來源: 比特網(wǎng)
相關(guān)推薦

2009-08-13 12:50:45

C#基礎(chǔ)知識

2009-08-27 16:37:06

C#基礎(chǔ)知識

2009-08-11 15:17:12

C#基礎(chǔ)知識

2009-08-13 15:40:28

C#基礎(chǔ)知識

2009-08-03 13:55:03

C#基礎(chǔ)知識

2009-08-19 17:13:15

C# 操作符基礎(chǔ)知識

2009-08-24 17:07:09

C# 泛型

2009-08-21 17:19:36

C#網(wǎng)絡(luò)編程入門

2010-01-19 14:45:35

C++語言

2009-08-19 16:19:01

C#操作Access數(shù)

2010-01-19 10:16:40

C++程序

2009-08-12 16:22:29

C#插件技術(shù)

2009-08-14 10:59:35

C#分部方法

2009-08-10 17:00:14

C#分部方法

2009-04-17 14:22:40

XPathXML基礎(chǔ)

2009-09-23 11:07:11

Hibernate基礎(chǔ)

2015-06-01 13:35:43

數(shù)據(jù)中心DCIM

2010-07-16 10:53:30

Perl基礎(chǔ)

2009-04-10 09:35:00

WCDMA基礎(chǔ)無線網(wǎng)絡(luò)

2010-07-16 11:22:31

Perl
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久黄视频 | 久久久久久毛片免费观看 | 伊人久久麻豆 | 天天射夜夜操 | 国产剧情久久 | 久久亚洲一区二区三区四区 | 99久久久久久久 | 亚洲视频精品 | 一区二区精品 | 色婷婷精品久久二区二区蜜臂av | 欧美日韩一区二区三区四区 | 亚洲欧美视频一区 | 波多野结衣亚洲 | 国产精品久久久久久久久久久新郎 | 中文字幕在线视频免费观看 | 天天草天天干天天 | 正在播放国产精品 | 国产精久久久久久久妇剪断 | 久久久国产精品入口麻豆 | 伊人网伊人网 | 毛片免费观看 | 美女福利视频网站 | 欧美日韩国产免费 | 天天操 夜夜操 | 国产精品视频久久久久 | 色综合中文 | 国产精品99久久久久久久vr | 色视频网站在线观看 | 日韩黄a | 欧美久久国产精品 | 国产成人免费一区二区60岁 | 成人激情视频在线观看 | 羞羞的视频免费观看 | 蜜臀久久99精品久久久久久宅男 | 羞羞视频免费观看 | 91精品国产综合久久婷婷香蕉 | 国产欧美精品一区二区色综合朱莉 | 日韩免费毛片 | 国产欧美在线 | 国产精品日韩在线观看一区二区 | 二区久久 |