C、C++、C#中struct的简单比较

比较这三者是因为C、C++、C#这三者存在着一定的血缘关系,而他们三者都有的struct却有很大的不同。

功能

  • C中的struct是最简单的。只能有成员变量而不能有成员函数。
  • C++和C#中都支持,而且支持很多其他的特性。C++中的struct和class没有太大功能上的差别。
  • C#中struct可以有构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型等特性。

可见性

  • C中没有可见性的概念,到处都可见。
  • C++中struct默认是公有继承,所以成员可见性是public。
  • C#中struct的成员默认为private。

和class的区别

  • C当然无从谈起。
  • C++中的struct除了默认可见性和class不同,其他的差别很小。比如可以有继承甚至多重继承。
  • C#中struct限制较多,不可以继承,但可以实现接口。不可以声明无参构造函数和析构函数。C#中所有结构都直接继承自 System.ValueType,后者继承自 System.Object。C#中的struct是值类型,而class是引用类型。

参考链接

[1] http://blog.csdn.net/yangzhiloveyou/article/details/8536793
[2] http://hi.baidu.com/hj11yc/item/902b8b2abfa226caee10f188
[3] http://msdn.microsoft.com/zh-cn/library/ah19swz4.aspx
[4] http://msdn.microsoft.com/zh-cn/library/saxz13w4.aspx