熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#.net中類與結構的區別[2]

2013-11-13 11:03:28  來源: .NET編程 

  .繼承性

  結構不能從另外一個結構或者類繼承本身也不能被繼承雖然結構沒有明確的用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
}

  .內部結構

  結構
  沒有默認的構造函數但是可以添加構造函數
  沒有析構函數
  沒有 abstract 和 sealed(因為不能繼承)
  不能有protected 修飾符
  可以不使用new 初始化
  在結構中初始化實例字段是錯誤的

  類
  有默認的構造函數
  有析構函數
  可以使用 abstract 和 sealed
  有protected 修飾符
  必須使用new 初始化

  三.如何選擇結構還是類

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

  . 堆棧的空間有限對於大量的邏輯的對象創建類要比創建結構好一些
  . 結構表示如點矩形和顏色這樣的輕量對象例如如果聲明一個含有 個點對象的數組則將為引用每個對象分配附加的內存在此情況下結構的成本較低
  . 在表現抽象和多級別的對象層次時類是最好的選擇
  . 大多數情況下該類型只是一些數據時結構時最佳的選擇

[]  []  


From:http://tw.wingwit.com/Article/program/net/201311/15076.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.