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

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

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

  一.類與結構的示例比較

  結構示例

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 的區別而且使用時定義新的結構和定義新的類的方法也非常類似那麼類和結構的具體區別是什麼呢?

  類與結構的差別

   值類型與引用類型

  結構是值類型值類型在堆棧上分配地址所有的基類型都是結構類型例如int 對應Systemint 結構string 對應 systemstring 結構 通過使用結構可以創建更多的值類型

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

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

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

  注

  雖然結構與類的類型不一樣可是他們的基類型都是對象(object)c#中所有類型的基類型都是object
  雖然結構的初始化也使用了New 操作符可是結構對象依然分配在堆棧上而不是堆上如果不使用新建(new)那麼在初始化所有字段之前字段將保持未賦值狀態且對象不可用

[]  []  


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