程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 中 Struct 與 Class 的區別,以及兩者的適用場合

C# 中 Struct 與 Class 的區別,以及兩者的適用場合

編輯:C#入門知識

先說區別,原文出處 http://www.dotnetspider.com/resources/740-Difference-between-class-struct-C.aspx
1,class 是引用類型,structs是值類型
既然class是引用類型,class可以設為null。但是我們不能將struct設為null,因為它是值類型。
    

struct AStruct
{
   int aField;
}
class  AClass
{
   int aField;
}
class MainClass
{
public static void Main()
{
AClass b = null; // No error.
AStruct s = null; // Error [ Cannot convert null to AStruct 

because it is a value type ].
}
}


2,當你實例一個class,它將創建在堆上。而你實例一個struct,它將創建在棧上

3,你使用的是一個對class實例的引用。而你使用的不是對一個struct的引用。(而是直接使用它們)

4,當我們將class作為參數傳給一個方法,我們傳遞的是一個引用。struct傳遞的是值而非引用。

5,structs 不可以有初始化器,class可以有初始化器。

class MyClass
{   
 int myVar =10;  //  no syntax error.    public void MyFun( ) 
   {       //  statements    }
}
struct MyStruct
{    
int myVar = 10;  //  syntax error.   
 public void MyFun( )  
  {       //  statements    }
}



6

 

Classes 可以有明顯的無參數構造器,但是Struct不可以

 

 

class MyClass
{   
  int myVar = 10; 
  public MyClass( ) // no syntax error.  
 {    
// statements
 }
}
struct MyStruct
{  
  int myVar; 
  public MyStruct( ) // syntax error.
   {       
  // statements  
   }
}


7 類使用前必須new關鍵字實例化,Struct不需要

 

MyClass aClassObj;     //
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved