Chapter 13. Structs

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 struct (or structure). Structs are designed to be lightweight alternatives to classes. In this case, the term lightweight means that structs use fewer resources (i.e., less memory) than classes, but they offer less functionality.

Structs are similar to classes in that they can contain constructors, properties, methods, fields, operators, nested types, and indexers. (See Chapter 15 for more on indexers.) There are, however, significant differences between classes and structs.

For example, structs don’t support inheritance or destructors. More importantly, while a class is a reference type, a struct is a value type.

The consensus view is that you ought to use structs 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 struct rather than a class.

In this chapter, you will learn how to define and work with structs and how to use constructors to initialize their values.


It is entirely possible to create robust commercial ...

Get Learning C# now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.