List of Figures

 

Chapter 1. The changing face of C# development

Figure 1.1. Evolution of the Product type, showing greater encapsulation, stronger typing, and ease of initialization over time

Figure 1.2. Features involved in making sorting easier in C# 2 and 3

Figure 1.3. Anonymous methods and lambda expressions in C# 2 and 3 aid separation of concerns and readability.

Figure 1.4. Options for working with missing data

Chapter 2. Core foundations: building on C# 1

Figure 2.1. Processing a call to a delegate instance that uses the C# shorthand syntax

Figure 2.2. The transformation process used for the C# shorthand syntax for combining delegate instances

Figure 2.3. Comparing value type and reference type behaviors, particularly with regard to assignment

Chapter 3. Parameterized typing with generics

Figure 3.1. Unbound generic types act as blueprints for constructed types, which then act as blueprints for actual objects, just as nongeneric types do.

Figure 3.2. The anatomy of a generic method declaration

Figure 3.3. Visual demonstration of why List<T> takes up a lot less space than ArrayList when storing value types

Figure 3.4. Interfaces for shapes and drawings, and two implementations of each

Chapter 4. Saying nothing with nullable types

Figure 4.1. Sample values of Nullable<int>

Figure 4.2. Results of boxing an instance without a value (top) and with a value (bottom)

Chapter 5. Fast-tracked delegates

Figure 5.1. Snapshot of multiple captured variable scopes in memory