More on Reference Types

Reference types tie computational behavior directly to their heap-allocated state. There are three important classifications of reference types within the CLI: objects, interfaces, and encapsulated pointers, each of which can be found within the Echo component of Example 3-1. Enumerating these elements, the Echo class itself is an object type that implements an interface, contains a delegate, and uses a managed pointer to pass an out parameter.

General Principles

Recall that the definition of a value type is tied to its data, which are types that are “represented as a sequence of bits.” The location of the value’s data is directly embedded into a value type instance. Conversely, a reference type “describes values that are represented in the location of a sequence of bits,” according to the ECMA specification. A reference type’s value data is never manipulated directly by clients but is always accessed indirectly.

A reference is essentially a small piece of memory that points to the actual location of the reference type—in many ways, it’s fair to think of the reference as a pointer. However, references have several advantages over pointers in the classic C/C++ sense:

References are strongly-typed

An object instance cannot be assigned to a reference unless it is assignment-compatible; this means a programmer cannot assign a Person object to a Department reference unless the type Person inherits from Department (an unlikely scenario).

References cannot be incorrectly ...

Get Shared Source CLI Essentials now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.