C# For Artists: The Art, Philosophy, and Science of Object-Oriented Programming Errata Chapter 2, page 36, Under the section "Build the Project", the sentence that reads: "Select Build->Build Solution from the main menu or press the F6 key as is shown in Figure 1-29." should read: "Select Build->Build Solution from the main menu or press the F6 key as is shown in Figure 2-29." (Credit: Dick Nagtegaal - de Vries) Chapter 5, page 101, Figure 5-11, in the list of Implemented Interfaces: IConvertable should be IConvertible. (Credit: Dick Nagtegaal - de Vries) Chapter 6, page 113, Table 6-1: C# Reserved Keywords: cast should be catch, usafe should be unsafe. (Credit: Dick Nagtegaal - de Vries) Chapter 6, page 121, section Operator Precedence And Associativity, in the second paragraph just below single line of code, the last sentence should read: "This may or may not be the way you want the expression to evaluate." (Credit: Dick Nagtegaal - de Vries) Chapter 6, page 125, section Relational, Type-Testing, and Equality Expression Operators, second paragraph just above table 6.5, the last line of the paragraph should read: "The behavior of these operators is summed up in Table 6-5." (Credit: Dick Nagtegaal - de Vries) Chapter 14, page 341, Figure 14-2, Caption should read: Figure 14-2: Results of Running Example 14.3 Chapter 14, page 355, second paragraph: "To briefly refiew..." should be "To briefly review..." (Credit: John Litchfield, Spring 2010) Chapter 17, page 418, 5th paragraph: "Individual fields within each record may by further..." should be "Individual fields within each record may be further..." (Credit: John Litchfield, Spring 2010) Page 734, Appendix C, Table Appendix C-4: Remove the sentence that reads "First letter of first word is lower-case; first letter of second word is upper-case." Page 735, Appendix C, under the section heading "Property Names": remove the first sentence of the first paragraph that reads, "Use camel case to formulate property names." Page 735, Appendix C, Table Appendix C-5: Remove the sentence that reads, "First letter of first word is lower-case; first letter of second word is upper-case." Page 298, Chapter 12, Figure 12-7. The bounds of the window in the upper left area of the diagram should read "bounds = (100, 275, 600, 350)". (Credit: Ms. Meghana Anne, ITP-136, Fall 2010) -------------------- CODE BUG FIXES and ANNOYANCE CORRECTIONS Person.Age property. (Various chapters in the book where Person class in used in programs.) The Person.Age property miscalculates the age under certain circumstances. The code has been updated on the C# For Artists Support Site to correct this problem. Thanks to Jon Goosens, a student in my Fall 2010 ITP-136 class for catching this bug. Good catch Jon! RobotRat.cs (Chapter 3 project walk through.) There is a bug in the MoveForward() method that will result in an array index out of bounds exception. This is caused by calling the floor.GetLength(n) method with n = 1 when moving SOUTH and the pen is UP when the floor array has a greater number of rows than columns. To replicated the bug, in the Main() method, create the instance of RobotRat by calling its constructor with, let's say, rows = 30 and columns = 20 like this: RobotRat(30, 20). Recompile and run the program. Turn the robot rat to face SOUTH and keep the pen UP. Move 25 spaces then set the pen DOWN. Turn EAST and try to move. An exception will be thrown. The code has been fixed and updated on the C# For Artists support site for all iterations of the RobotRat code containing the faulty MoveForward() method. Thanks to the coworker of a student in my Fall 2010 ITP-136 class for catching this bug. RobotRat.cs (Chapter 3, Complete Listing on page 67) The comments above the PrintMenu() method should read "Prints the menu to the screen" EmployeeMVC (Chapter 25) Added missing files IEmployeeFactory and EmployeeFactory to the Common folder. Fixed a bug in the program that manifested itself when saving a file of employee data to any directory other than the working directory. When this occurred, the program's working directory changed and the program could no longer find the Commands.dll file.