So far, the only user-defined type you've seen is the class. The class, as you know, defines a new type. Instances of a class are called objects. Classes are reference types; when you create a new instance of a class you get back a reference to the newly created object on the heap. (Creating classes is discussed in Chapter 8.)
A second type of user-defined type is a structure. Structures are designed to be lightweight alternatives to classes. In this case, the term lightweight means that structures use fewer resources (i.e., less memory) than classes, but they offer less functionality.
Structures are similar to classes in that they can contain constructors, properties, methods, fields, operators, nested types, and indexers. (See Chapter 14 for more on indexers.) There are, however, significant differences between classes and structures.
For example, structures don't support inheritance or destructors (in a sense, de-structure-ors). More important, while a class is a reference type, a structure is a value type.
The consensus view is that you ought to use structures only for types that are small, simple, and similar in their behavior and characteristics to built-in types. For example, if you were creating a class to represent a point on the screen (x,y coordinates), you might consider using a structure rather than a class.
In this chapter, you will learn how to define and work with structures and how to use constructors (or con-structure-ors, to be precise) ...