日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c#中结构与类的区别

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#中结构与类的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
類與結構的差別

  如何選擇結構還是類

  一.類與結構的示例比較:

  結構示例:
  public?struct?Person?
  {

  string?Name;

  int?height;

  int?weight

  public?bool?overWeight()

  {

  //implement?something

  }

  }



  類示例:


  public?class?TestTime?
  {

  int?hours;

  int?minutes;

  int?seconds;

  public?void?passtime()

  {



 //implementation?of?behavior?
  }

  }

  調用過程:


  public?class?Test?
  {

  public?static?ovid?Main

  {

  Person?Myperson=new?Person?//聲明結構

  TestTime?Mytime=New?TestTime?//聲明類

  }

  }



  從上面的例子中我們可以看到,類的聲明和結構的聲明非常類似,只是限定符后面是?struct?還是?class?的區別,而且使用時,定義新的結構和定義新的類的方法也非常類似。那么類和結構的具體區別是什么呢?

  二?.類與結構的差別

  1.值類型與引用類型

  結構是值類型:值類型在堆棧上分配地址,所有的基類型都是結構類型,例如:int?對應System.int32?結構,string?對應?system.string?結構?,通過使用結構可以創建更多的值類型

  類是引用類型:引用類型在堆上分配地址

  堆棧的執行效率要比堆的執行效率高,可是堆棧的資源有限,不適合處理大的邏輯復雜的對象。所以結構處理作為基類型對待的小對象,而類處理某個商業邏輯

  因為結構是值類型所以結構之間的賦值可以創建新的結構,而類是引用類型,類之間的賦值只是復制引用

  注:

  1.雖然結構與類的類型不一樣,可是他們的基類型都是對象(object),c#中所有類型的基類型都是object?

  2.雖然結構的初始化也使用了New?操作符可是結構對象依然分配在堆棧上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段將保持未賦值狀態,且對象不可用

  2.繼承性

  結構:不能從另外一個結構或者類繼承,本身也不能被繼承,雖然結構沒有明確的用sealed聲明,可是結構是隱式的sealed?.

  類:完全可擴展的,除非顯示的聲明sealed?否則類可以繼承其他類和接口,自身也能被繼承

  注:雖然結構不能被繼承?可是結構能夠繼承接口,方法和類繼承接口一樣
例如:結構實現接口


  interface?IImage
  {
  void?Paint();
  }?
  struct?Picture?:?IImage
  {
  public?void?Paint()
  {
  //?painting?code?goes?here
  }
  private?int?x,?y,?z;?//?other?struct?members
  }



  3.內部結構:

  結構:

  沒有默認的構造函數,但是可以添加構造函數

  沒有析構函數

  沒有?abstract?和?sealed(因為不能繼承)

  不能有protected?修飾符

  可以不使用new?初始化

  在結構中初始化實例字段是錯誤的

  類:?

  有默認的構造函數

  有析構函數

  可以使用?abstract?和?sealed?

  有protected?修飾符

  必須使用new?初始化

  三.如何選擇結構還是類

  討論了結構與類的相同之處和差別之后,下面討論如何選擇使用結構還是類:

  1.堆棧的空間有限,對于大量的邏輯的對象,創建類要比創建結構好一些

  2.結構表示如點、矩形和顏色這樣的輕量對象,例如,如果聲明一個含有?1000?個點對象的數組,則將為引用每個對象分配附加的內存。在此情況下,結構的成本較低。

  3.在表現抽象和多級別的對象層次時,類是最好的選擇

  4.大多數情況下該類型只是一些數據時,結構時最佳的選擇?

總結

以上是生活随笔為你收集整理的c#中结构与类的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。