Structs are similar to classes in that they represent data structures that
can contain data members and
function members. However, unlike classes, structs are value types and do
not require heap allocation. A
variable of a struct type directly contains the data of the struct, whereas
a variable of a class type contains a
reference to the data, the latter known as an object.
[Note: Structs are particularly useful for small data structures that have
value semantics. Complex numbers,
points in a coordinate system, or key-value pairs in a dictionary are all
good examples of structs. Key to
these data structures is that they have few data members, that they do not
require use of inheritance or
referential identity, and that they can be conveniently implemented using
value semantics where assignment
copies the value instead of the reference. end note]
As described in §11.1.3, the simple types provided by C#, such as int,
double, and bool, are, in fact, all
struct types. Just as these predefined types are structs, it is also
possible to use structs and operator
overloading to implement new ?primitive? types in the C# language. Two
examples of such types are given
at the end of this chapter (§18.4).
can contain data members and
function members. However, unlike classes, structs are value types and do
not require heap allocation. A
variable of a struct type directly contains the data of the struct, whereas
a variable of a class type contains a
reference to the data, the latter known as an object.
[Note: Structs are particularly useful for small data structures that have
value semantics. Complex numbers,
points in a coordinate system, or key-value pairs in a dictionary are all
good examples of structs. Key to
these data structures is that they have few data members, that they do not
require use of inheritance or
referential identity, and that they can be conveniently implemented using
value semantics where assignment
copies the value instead of the reference. end note]
As described in §11.1.3, the simple types provided by C#, such as int,
double, and bool, are, in fact, all
struct types. Just as these predefined types are structs, it is also
possible to use structs and operator
overloading to implement new ?primitive? types in the C# language. Two
examples of such types are given
at the end of this chapter (§18.4).
本文探讨了结构体作为值类型在C#中的作用与特性,包括它们如何直接包含数据而不需要堆分配,以及它们适用于小型数据结构且拥有值语义的情况。通过与类类型的对比,文章进一步解释了结构体在实现复杂数、坐标点等概念时的优势。
2736

被折叠的 条评论
为什么被折叠?



