O'Reilly logo

Shared Source CLI Essentials by Ted Neward, Geoff Shilling, David Stutz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required