何时在C#中使用结构


When to use Structs in C#

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
When to use struct in C#?

我正在网上阅读C教程http://www.csharp-station.com/tutorials/lesson12.aspx。我谈到了关于结构的话题。

我只是对这件事感到困惑。什么时候struct有利于使用,或者它的实际用途是什么?


结构是值类型。类是对象类型。

当您不必通过引用将值类型传递到函数/方法参数中时,您可以使用值类型——即,您不能在函数/方法内部更改它。

每当您将它传递给一个函数/方法时,它总是被复制(即传递值),而不是被引用。当像对象一样被访问时,结构自动装箱。

在实践中,只要有一组数据形成一个连贯的整体(例如,带RGB的颜色、带XYZ的矢量、复数等),就可以使用结构来建模,而整个项构成一个单元。

它们还用于与非托管库(例如接受结构参数的C或C++ DLL函数)的接口。


来自msdn的引用:

The struct type is suitable for representing lightweight objects such as Point, Rectangle, and Color. Although it is possible to represent a point as a class, a struct is more efficient in some scenarios. For example, if you declare an array of 1000 Point objects, you will allocate additional memory for referencing each object. In this case, the struct is less expensive.


你知道整数和浮点数不需要"初始化"(设置为新的整数/浮点数)吗?

结构是像类中那样声明成员排列的一种方式,其行为类似于此。