7.1 What Will Be Covered in This Chapter7.2 Review 7.2.1 Moving Forward 7.3 Visual Studio 7.3.1 The Debugger7.3.2 Mono History 7.4 Function Overloading 7.4.1 A Closer Look at Functions7.4.1.1 A Basic Example7.4.2 Function Signature 7.4.3 Different Signatures7.4.4 Putting It Together7.4.5 Not Quite Recursion7.4.6 DrawWords7.4.7 What We’ve Learned7.5 Accessors (or Properties) 7.5.1 Value 7.5.1.1 A Basic Example7.5.2 Set Event7.5.3 Read-Only Accessor 7.5.4 Simplification7.5.5 What We’ve Learned 7.6 Base Classes: Another Look7.6.1 Generalization—Base Classes7.6.2 Specialization7.6.3 Base7.6.4 Partial7.6.5 Protected, Private, and Public7.6.6 What We’ve Learned7.7 Optional Parameters7.7.1 Using Optionals7.7.1.1 A Basic Example7.7.2 Optional Arguments 7.7.3 Named Parameters7.7.3.1 A Basic Example 7.7.4 Combining What We’ve Learned 7.7.5 What We’ve Learned 7.8 Delegate Functions7.8.1 Delegates7.8.1.1 A Basic Example7.8.2 Delegate Signatures7.8.3 Stacking Delegates 7.8.4 Using Delegates7.8.5 Updating Delegates 7.8.6 What We’ve Learned 7.9 Interface 7.9.1 Early Planning7.9.1.1 A Basic Example7.9.1.2 Using Accessors 7.9.2 Multiple Interfaces7.9.3 IComparer 7.9.4 Using IComparer 7.9.5 What We’ve Learned 7.10 Class Constructors Revisited7.10.1 A Basic Example7.10.2 When to Create a New Class7.10.3 What We’ve Learned7.11 Preprocessor Directives7.11.1 A Basic Example7.11.2 UNITY_EDITOR7.11.3 Mobile Development 7.11.4 Warning7.11.5 Organizing 7.11.6 What We’ve Learned 7.12 Try Catch Finally 7.12.1 A Basic Example7.12.2 Exception Messages 7.12.3 Custom Exceptions 7.12.4 Finally 7.12.5 Try-Catch and Finally in Use7.12.6 What We’ve Learned7.13 IEnumerator 7.13.1 Enumeration7.13.1.1 A Basic Example7.13.1.2 What Doesn’t Work 7.13.2 Implementing IEnumerator7.13.3 What We’ve Learned7.14 Generics 7.14.1 Generic Functions 7.14.1.1 A Basic Example 7.14.1.2 Why T?7.14.2 Making Use of Generic Functions 7.14.3 Generic Types 7.14.4 Var 7.14.5 Multiple Generic Values 7.14.6 Anonymous Objects 7.14.7 What We’ve Learned 7.15 Events 7.15.1 A Basic Example7.15.2 A Proper Event 7.15.3 EventArgs7.15.4 Generic EventArgs 7.15.5 What We’ve Learned 7.16 Extension Functions7.16.1 Extensions 7.16.2 A Basic Example7.16.3 Overloading with Extensions 7.16.4 Magic Mirror 7.16.5 What We’ve Learned 7.17 Destructors7.17.1 A Basic Example7.17.2 Clearing Events or Delegates 7.17.3 OnDestroy 7.17.4 The Ugly Truth7.17.5 What We’ve Learned 7.18 Concurrency or Co-Routines 7.18.1 Yield7.18.1.1 A Basic Example 7.18.2 Setting Up Timers 7.18.3 Arrays of Delegates7.18.4 Stopping a Co-Routine7.18.5 What We’ve Learned 7.19 Dictionary, Stacks, and Queues 7.19.1 A Basic Example7.19.2 ContainsKey7.19.3 Stacks 7.19.3.1 A Basic Example 7.19.4 Movement Stack7.19.5 Queues7.19.6 What We’ve Learned 7.20 Lambda Expressions 7.20.1 Anonymous Expressions 7.20.1.1 A Basic Example—Action Func and Expression 7.20.2 Lambda Expressions 7.20.3 A Queue of Lambdas 7.20.4 What We’ve Learned 7.21 Leveling Up