本文轉自:http://blog.csdn.net/lianchangshuai/article/details/5810249.net
一、結構用於小的數據類型,全部結構派生自System.ValueType類,不能再繼承其它基類,同時也不能被繼承。blog
而類通常用於大的數據類型如人類,動物類等,支持繼承。繼承
二、結構和類同樣能夠有成員方法,字段。
三、結構中的成員字段不能被顯式初始化,要經過默認無參構造器初始化,而類的字段能夠顯示初始化,默認由無參構造器初始化。接口
四、結構的無參構造器老是存在,不管是否手動添加了其它構造器,而類只要手工添加任一個構造器,就不會再有默認的無參構造器,固然能夠自行添加,用於成員字段的初始化。string
五、結構能夠採用兩種方式聲明(和枚舉enum相同):
第一種不使用new,和聲明通常數據類型如int、string同樣,假設有一個結構MyStruct,建立一個實例以下:編譯
MyStruct struct1;
第二種採用和實例化類同樣的方式如MyStructnn=new MyStruct()。class
六、 結構不能顯式的包含無參構造器,也便是說不能手工添加一個無參構造器,而類在沒有任何構造器的狀況下會自動生成一個無參構造器,一樣也能夠手工添加一個無參構造器。權限
七、 結構不支持繼承,任何其它結構或類不能由結構派生,而類則能夠。數據類型
八、結構支持接口繼承,不支持實現繼承,就是說結構能夠繼承自某一個接口,但不能繼承自某一個類或結構。方法
九、class與struct內部的成員的訪問權限默認都是private私有的,這與C++不一樣,C++中class內部成員的默認訪問權限是private私有的,而struct內部的成員訪問權限默認是public公有的。
十、若是僅是調用struct內部的公有成員字段,則不使用New的方式建立實例就好了如MyStruct struct1;
而若是要調用struct內部的公有方法則必須使用New來建立struct實例,不然會出現編譯錯誤。