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 aDepartment
reference unless the typePerson
inherits fromDepartment
(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.