我何时使用struct而不是在c#中使用class?

时间:2011-08-14 22:13:53

标签: c#

  

可能重复:
  When should I use a struct instead of a class?

来自Venkat K的C#.NET论坛。

29-Apr-09 07:38 AM

  

“class”和“struct”之间的唯一区别是struct默认拥有公共成员(数据成员和函数成员)和struct默认为公共继承,而类默认为私有成员和私有继承。这是唯一的区别。这种差异可以通过明确指定“public”,private“或”protected“来规避,这样就可以使结构在任何方面都像一个类,反之亦然。按照惯例,大多数程序员使用”struct“来表示数据类型。没有成员函数,也没有使用继承。对于具有成员函数和继承的数据类型,它们使用“class”。但是,这不是必需的,甚至不是通用的。

*(这可能是真的)

3 个答案:

答案 0 :(得分:3)

对于C#来说,这句话完全是错误的。我相信C ++可能也是如此,但在C#中,区别在于值类型(结构)和引用类型(类)。

答案 1 :(得分:1)

这不是唯一的区别。结构是值类型,类是引用类型。在Google上查找以了解更多有关差异的信息,这些差异太多,无法立即列出。<​​/ p>

除非@BrokenGlass指出它是C ++。

答案 2 :(得分:1)

您引用的语句对于C ++是正确的,但不适用于C#。以下是关于结构的 C#语言规范所述内容的摘录:

  

与类类似,结构体是可以包含数据成员和函数成员的数据结构,但与类不同,结构体是值类型,不需要堆分配。结构类型的变量直接存储结构的数据,而类类型的变量存储对动态分配的对象的引用。结构类型不支持用户指定的继承,并且所有结构类型都隐式继承自类型对象。

     

结构对于具有值语义的小型数据结构特别有用。复数,坐标系中的点或字典中的键值对都是结构的好例子。对小型数据结构使用结构而不是类可以使应用程序执行的内存分配数量产生很大差异。