Errata

Learning C# 2005

Errata for Learning C# 2005

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page 8
line 5

the complier.
should be:
the compiler.

Anonymous    Apr 01, 2008
Printed
Page 44
2nd para under Numeric Types

The reason a ushort can hold up to 65,535 is that 65,535 is a round
number in binary arithmetic (2^16).
->
The reason a ushort can hold up to 65,535 is that 65,536 is a round
number in binary arithmetic (2^16) and one bit is devoted to 0.

#########################################

Anonymous    May 01, 2007
Printed
Page 49
Definite Assignment first line

C# requires definite assignment; that is, variables must be
initialized (or assigned to) before they are "used."

->

C# requires definite assignment; that is, variables must be
initialized (or assigned to) before they are "used" (see "out
Parameters and Definite Assignment" in Chapter 8).

#########################################

Anonymous    May 01, 2007
Printed
Page 52
Enumerations: The MSDN and my book shows the syntax of an enumeration requiring an ending

semicolon, but that is not correct; leaving out the semicolon has no effect (see example 3-5)

Anonymous   
Printed
Page 54
Last example

NOW READS:
int myInt = 5;
short myShort = (short) myInt; // not (int) myInt

Anonymous    Jun 01, 2006
Printed
Page 54
Box on Casting;

the final line of code changed to:
short myShort = (short) myInt; // explicit conversion

Anonymous    Dec 01, 2006
Printed
Page 121
3rd paragraph

In the sentence: "In Example 7-2, DisplayCurrentTime()was invoked from a method of
Tester (not Time),..." the reference NOW READS Example 7-1 not 7-2.

Anonymous    Jun 01, 2006
Printed
Page 127
Second code snippet (SetTime)

this.hour = hour
->
this.hour = newHour

#########################################

Anonymous    May 01, 2007
Printed
Page 129
top of page

Class1
->
Program

#########################################

Anonymous    May 01, 2007
Printed
Page 153
Example 8-3, top

theSecond )= Second;
->
theSecond = Second;

#########################################

Anonymous    May 01, 2007
Printed
Page 155
Example 8.4/ toward the bottom of the page

public void GetTime(
int theHour,
int theMinute,
int theSecond )

NOW READS:
public void GetTime(
ref int theHour,
ref int theMinute,
ref int theSecond )
etc

Anonymous    Jun 01, 2006
Printed
Page 155
Example 8-4 Method

GetTime(), all parameters changed to:

GetTime(ref int theHour, ref int theMinute, ref int theSecond) {

Anonymous    Dec 01, 2006
Printed
Page 168
3rd line

Recalulate
->
Reevaluate

#########################################

Anonymous    May 01, 2007
Printed
Page 200
under Controlling Access

MyOtherClass inherits myValue from MyClass thus the definition of MyOtherClass

public class MyOtherClass : MyClass
{
Console.WriteLine("myInt: {0}", myInt);
}

NOW READS:

public class MyOtherClass : MyClass
{
Console.WriteLine("myInt: {0}", myValue);
}

Furthermore, all subsequent appearances of myInt in the Controlling Access section
HAVE BEEN CHANGED to myValue

Anonymous    Jun 01, 2006
Printed
Page 264
first bullet of Summary on that page

"In the new interface definition, use the colon operator followed by the name of the
name of..."
The duplicate instance of "the name of" HAS BEEN DELETED.

Anonymous    Jun 01, 2006
Printed
Page 265
Exercise 13-3

Extend the interface by creating a new interface, IConvertible

NOW READS:
Extend the interface by creating a new interface, ICodeChecker

Anonymous    Jun 01, 2006
Printed
Page 265
Exercise 13-3

Extend the interface by creating a new interface IConvertible
->
Extend the interface by creating a new interface ICodeChecker

Anonymous    Dec 01, 2006
Printed
Page 266
Generics: first sentence

(ArrayList, Stack, and Queue)
->
(Array, List, Stack, and Queue)

#########################################

Anonymous    May 01, 2007
Printed
Page 296
bottom of page

in the output of example 14-8 the last line displays:

The new array:
25 20 15 10 5 0

yet there's no corresponding code section for it in the code of example 14-8. I
assume that ouput should have been generated by an "intStack.Toarray()" command
followed by the proper "Console.WriteLine" statement iterated through the new array
to display its elements.

Anonymous   
Printed
Page 309
Example 15-3; (will be fixed in new edition per author)

that example and the related explanation doesn't make much sense and actually
confuses the reader more. a full explanation of it wouldn't fit in here, but there
are subtle errors in the code, like [Console.WriteLine( "
s2 = "Hello"; ");] which
first of all doesn't even appear in the representation of the output; it also
contains an extra semi-colon (guess which one it is?!) and s1 is the one set to
"Hello" on the next line, not s2. in the explanation you say [Now, returining to s1
and s2, ...] and then skip to [s3 = "Goodbye";] without even mentioning the
correlation between s1 and s2. on top of that. I believe that even after s1 and s3
are reassigned there still remains one instance of the original string referred to by
s1 (you said there weren't anymore) and that is s2 since it was created with the =
operator. Confused yet?
anyway, this whole example needs to be reviewed.

Anonymous   
Printed
Page 349
Indent after 2nd para

public delegate Comparison WhichIsFirst<T>( T obj1, T obj2 );
->
public delegate Comparison WhichIsFirst( T obj1, T obj2 );

Anonymous    Dec 01, 2006
Printed
Page 359
Code after after 6th para

public delegate void SecondChangeEventHandler: (object clock...
->
public delegate void SecondChangeEventHandler (object clock...

Anonymous    Dec 01, 2006
Printed
Page 361
bottom of the page

theClock.SecondChanged += new Clock.SecondChangeHandler(TimeHasChanged);
->
theClock.SecondChanged += new Clock.SecondChangeEventHandler(TimeHasChagned);

Anonymous    Dec 01, 2006
Printed
Page 371
beginning of Using Anonymous Methods section

theClock.SecondChanged += TimeHasChanged;
->
theClock.SecondChanged += new Clock.SecondChangeHandler(TimeHasChanged);

Anonymous    Dec 01, 2006
Printed
Page 394
2nd code block from bottom

protected void btnCopy_Click
->
private void btnCopy_Click

#########################################

Anonymous    May 01, 2007
Printed
Page 394
beginning of bottom half of page

on page 392, btnCopy_Click was declared as:
private void btnCopy_Click(object sender, System.EventArgs e)
but now it's
protected void btnCopy_Click(object sender, System.EventArgs e)

One might get confused into thinking that they are 2 different event handlers.

Anonymous    Sep 01, 2007