C#中的结构与类
中国IT站 www.chinaitz.com 2009-3-6
C# Corner今天发表了Bechir Bejaoui的一篇文章《What really make difference between structures and classes?》。关于结构和类的区别其实是老生常谈,不过本文总结得较为全面,所以翻译过来给大家共享。
总结起来,两者共有如下区别:
1、结构是值类型,类则是引用类型。因此前者是放在栈(Stack)里,后者则仅仅是将引用地址存放在栈里,而具体的值则存放在堆(heap)里。如下图所示:

2、据第1点可以得出结论,那就是类对象通常用来传递大数据,而结构对象则用来传递小数据。
3、类可以被继承,而结构则不支持。
4、结构对象不能像类对象一样赋值为null。
5、结构不能像类一样定义析构器。
6、结构不能像类一样定义为抽象的。
7、在结构中不能重写方法,除非是object类型的如下方法:
Equals()
GetHashCode()
GetType()
ToString()
若要让结构具有多态特性,可以让其实现接口。
8、在类中定义的事件是线程安全的,而结构则不是。
9、结构总是具有一个默认的公共无参构造函数,但却不能像类一样定义私有的无参构造函数(结构也不能再定义公共的无参构造函数,这与类不相同):
struct Me
{
private Me() // compile-time error
{
}
}
class Me
{
private Me() // runs Ok{
}
评论加载中...相关资讯
- 2009-3-6仿查询分析器的C#计算器——1.初步分析
- 2009-3-6当弱引用对象成为集合元素时
- 2009-3-6C#中的结构与类
- 2009-3-6成功解决Developer Express和Janus WinForms Controls中控件的冲突
- 2009-3-6由C#数组类型引起的程序BUG说起
- 2009-3-6水晶报表:单击表头排序C#2.0版
- 2009-3-6c# 4.0新特性一览
- 2009-2-28log4net在WINFORM里面的使用
- 2009-2-28C#生成缩略图控件
- 2009-2-28利用C#开发科技档案管理系统(三)
