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.
Version |
Location |
Description |
Submitted By |
Date submitted |
Date corrected |
Other Digital Version |
Location 116
Under code samples |
The following link provided:
http://aka.ms/VC2013SbS/files
for me does not seem to open any webpage. I've tried directly pasting it into my browser (and different browsers - IE, Chrome) with the same 404 error popping up. Don't know if I am missing something obvious.
Thanks for your help!
-Patrick
Note from the Author or Editor: The files have not yet been hosted. They should be there shortly.
|
Patrick Kennedy |
Nov 18, 2013 |
|
Printed, PDF |
Page Page xxiv
Code Samples section (3 occurences) |
The Code Samples section refers to the file C#_SBS.zip. However, the name of the download containing the code files is actually C_Sharp_SBS.zip
|
John Sharp |
Nov 22, 2013 |
|
Printed, Other Digital Version |
Page Pratice Files + Code
2630 8.Locate the compareClick method, which should look like this: |
Error in downloaded code files.
This needs to be .SelectedDate.Value instead of .DisplayDate
private void compareClick(object sender, RoutedEventArgs e)
{
int diff = dateCompare(firstDate.DisplayDate, secondDate.DisplayDate);
Note from the Author or Editor: Unfortunately, the uploaded sample files for this chapter are the wrong version (they are a preliminary version that were changed, although I seem to have mixed up the versions - entirely my fault).
The first line in the compareClick method should be exactly as reproduced in the book:
int diff = dateCompare(first, second);
The problem is that the DatePicker controls in Windows 7 and Windows 8.1 expose different properties for accessing the current date. I hid these differences by using two properties named first and second in the MainWindow class, which is what the code in the book uses. For interest, these properties look like this in Windows 7:
#region Conversion properties to cater for the differences between the DatePicker control in Windows 7 and Windows 8.1
private DateTime first
{
get { return this.firstDate.SelectedDate.GetValueOrDefault(this.firstDate.DisplayDate); }
}
private DateTime second
{
get { return this.secondDate.SelectedDate.GetValueOrDefault(this.secondDate.DisplayDate); }
}
#endregion
In Windows 8.1 they look like this:
#region Conversion properties to cater for the differences between the DatePicker control in Windows 7 and Windows 8.1
private DateTime first
{
get { return this.firstDate.Date.LocalDateTime; }
}
private DateTime second
{
get { return this.secondDate.Date.LocalDateTime; }
}
#endregion
It is not actually necessary to understand how these properties work (properties are covered later in the book), but I thought I ought to explain what had happened here.
I will ask to have the latest version of the code uploaded, so hopefully this problem should not confuse readers in the future.
|
Walter Pidwarko |
Dec 14, 2013 |
|
Other Digital Version |
Location 2707
1st paragraph |
Built-in method for comparing dates is called CompareTo not Compare
Note from the Author or Editor: On page 105, in the box titled "Comparing dates in real-world applications", the phrase, the reference to the Compare method (5 lines from the end of the box) should be CompareTo.
|
Walter Pidwarko |
Dec 14, 2013 |
|
Printed |
Page xxiv
middle of page |
I downloaded the code files but can not extract the zip file.
I receive an error about the path name is too long.xxiv
Note from the Author or Editor: An extra folder level (C_Sharp_SBS) seems to have crept in to the file paths in the zip, and if you do not extract the files directly into the Documents folder the names of some of the generated .pp files for the later exercises cause this error. These files are not critical.
However, to avoid this problem, open the ZIP file after downloading it, move to the C_Sharp_SBS folder in the ZIP, and then drag the Microsoft Press folder to your Documents folder. This should extract the files and put them in the correct place as documented by the exercises in the book, and hopefully the path names should no longer be too long.
|
Anonymous |
Dec 30, 2013 |
|
Printed |
Page xxv
2nd paragraph |
Page xxv in the Introduction states that the sample code should have folders for each chapter with the suffix "- Complete", but no such folders exist.
Note from the Author or Editor: We are uploading a new version of the code samples with this issue rectified.
|
Anonymous |
Feb 06, 2014 |
|
Printed |
Page 32
bottom third |
typeof(GraphWindow) should be typeof(MainPage) as follows
(and navigation error handling is now a separate method--not just an if statement)
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
// Ensure the current window is active
Note from the Author or Editor: This was a "cut and paste" typo. The statement 12 lines from the bottom of the page, should be:
if (!rootFrame.Navigate(typeof(MainPage), e.Arguments))
|
Anonymous |
Jan 29, 2014 |
|
Printed |
Page 36
first 4 lines |
get warning that await not used with async method
either explain to the reader or change the code to include async and await as follows:
private async void okClick(object sender, RoutedEventArgs e)
{
MessageDialog msg = new MessageDialog("Hello " + userName.Text);
await msg.ShowAsync();
}
Note from the Author or Editor: It is probably worth adding the following note at the end of step 5 at the top of page 36:
This code will display a warning concerning the use of an asynchronous method when it is compiled. You do not have to be concerned about this warning. Asynchronous methods are explained more fully in Chapter 24.
|
Anonymous |
Jan 29, 2014 |
|
PDF |
Page 71
step 3 |
You mentioned 2 times that Int32 is a class, while it is a struct.
Note from the Author or Editor: We had a bit of a debate about this when we wrote this step of the exercise. Int32 is a struct (as documented and referenced on page 213 later in the book), but at this stage structs have not been introduced. We originally used the term "type", but it got edited into "class".
In this paragraph, the two instances of the word "class" should be changed to "type".
|
Moataz |
Dec 20, 2013 |
|
Other Digital Version |
90
Item #9 in the To Do code 2nd case statement, 4 lines down from "above the default label:" |
Hi,
I wrote a couple of note to different people in the even my notes were ignored.
It is on page 90 of the Nook eBook from Barnes and Noble.
Page: 90, Chapter 4. Item 9. The Chapter is called: ? Following the switch statement rules?
The application is "nook for PC" and as I said it was from Barnes and Nobel.
machine Configuration":
Windows 8.1 upgrade from Win 8.0.
Intel i7 Quad core (x64)
Tools:
Microsoft visual Studio 2013 Ultimate (trial)
The Error in print copy the code:
?&' :
The first error reads in the tool tips: Newline in constant.
My 1st correction >>> '&'' :
2nd correction >>> ?&'' :
3rd correction >>> ?&&x0027; :
4th >>> ?&&x0027;' :
5th >>> ?&' :
and so on - All my corrections resulted in the same error:
To Many characters in character literal.
Please let me know what you find:
Harvey L Wright
Lubbock, TX
Note from the Author or Editor: It looks like there are some formatting issues with the Nook edition of the book. The completed code for the CopyOne method should look like this:
private void copyOne(char current)
{
switch (current)
{
case '<':
target.Text += "<";
break;
case '>':
target.Text += ">";
break;
case '&':
target.Text += "&";
break;
case '\"':
target.Text += """;
break;
case '\'':
target.Text += "'";
break;
default:
target.Text += current;
break;
}
}
The formatting process for the Nook edition seems to have mangled some of the text sequences. This code is correct in the printed edition and PDF edition of the book ? the steps that get the user to write this code should look like this:
8. Add the following statements shown in bold to the switch statement after the opening brace for the statement and directly before the default label:
switch (current)
{
case '<' :
target.Text += "<";
break;
default:
target.Text += current;
break;
}
If the current character being copied is a left angle bracket (<), the preceding code appends the string ?<? to the text being output in its place.
9. Add the following statements to the switch statement after the break statement you have just added and above the default label:
case '>' :
target.Text += ">";
break;
case '&' :
target.Text += "&";
break;
case '\"' :
target.Text += """;
break;
case '\'' :
target.Text += "'";
break;
|
Harvey Wright |
Jan 10, 2014 |
|
Printed |
Page 153
second line |
Text assumes no radio button has IsChecked = True, but the "addition" radio button in the sample code has IsChecked = True.
So, you have to turn that off in MainWindow.xaml beforehand for the exercise to make sense.
Note from the Author or Editor: We are uploading a new version of the code samples with this issue rectified.
|
Anonymous |
Feb 01, 2014 |
|
Other Digital Version |
221
4th Paragraph (item 10.) |
...
...
private void drawingCanvas_RightTapped(object sender, HoldingRoutedEventArgs e)
...
When creating drawingCanvas_RightTapped event handler
VS2013 update 1 (Windows 8.1 newest SP); Visual Studio creates:
private void drawingCanvas_RightTapped(object sender, RightTappedRoutedEventArgs e)
instead of:
private void drawingCanvas_RightTapped(object sender, HoldingRoutedEventArgs e)
When I correct "RightTappedRoutedEventArgs e" and change it to "HoldingRoutedEventArgs e" I get a runtime error:
No overload for 'drawingCanvas_RightTapped' matches delegate
'Windows.UI.Xaml.Input.RightTappedEventHandler'
Note from the Author or Editor: This seems to be one of those items that changed between the "early" and "final" releases of VS 2013. The type of the parameter should be RightTappedRoutedEventArgs as generated by Visual Studio.
|
Anonymous |
Feb 19, 2014 |
|
PDF |
Page 301,303
bottom,top |
Colors is a class, not enum.
Note from the Author or Editor: The final paragraph at the bottom of page 301 should be:
"The Windows.UI namespace contains the definition of the Colors class which you will use when you set the color of a shape as it is drawn. In WPF, this class is defined in the System.Windows.Media namespace, which is already referenced by the DrawingPad.xml file"
The following sentence (in brackets) at the top of page 303 should read:
"(The Colors class is provided as part of the .NET Framework)"
|
Moataz |
Dec 20, 2013 |
|
PDF |
Page 305
top |
2 semi-colons after 2 methods implementation
Note from the Author or Editor: The semi-colon after the closing "}" for the two implementations of the ChewGrass methods (for the Horse and Sheep classes) should be removed.
|
Moataz |
Dec 20, 2013 |
|
Printed |
Page 329-336
all |
The sample code for Chap 14 is already completed.
Note from the Author or Editor: We are uploading a new version of the code samples with this issue rectified.
|
Anonymous |
Feb 06, 2014 |
|
PDF |
Page 445
2nd paragraph |
you said:
IEnumerator<T> class* containing a Current method**
* interface
** property
Note from the Author or Editor: The second sentence of the second paragraph on page 445 should read:
"The compiler uses this code to generate an implementation of the IEnumerator<T> interface containing a Current property and a MoveNext method."
|
Moataz |
Dec 20, 2013 |
|
PDF |
Page 449
top |
IEnumerator<TItem> GetEnumerator(){}
you must either implement this method explicitly or qualify it as public.
Note from the Author or Editor: This is an oversight caused by oversimplifying the code shown in the exercises (the code in the exercises is correct). In the Do This column in the first row of the Quick reference table, the code should be:
public class Tree<TItem> : IEnumerable<TItem>
{
...
IEnumerator<TItem> IEnumerable<TItem>.GetEnumerator()
{
...
}
}
Similarly, in the third row, the code sample should be:
IEnumerator<TItem> IEnumerable<TItem>.GetEnumerator()
{
for (...)
{
yield return ...
}
}
Also, in the second row, the code for the Current and MoveNext members should reference the IEnumerator<TItem> type:
public class TreeEnumerator<TItem> : IEnumerator<TItem>
{
...
TItem IEnumerator<TItem>.Current
{
get
{
...
}
}
bool IEnumerator<TItem>.MoveNext()
{
...
}
}
|
Moataz |
Dec 20, 2013 |
|
PDF |
Page 506
step 7 |
a quote from the book:
"LINQ provides generic and nongeneric versions of the ToList and ToArray methods."
I didn't find any nongeneric versions.
Any generic method can be called with/without <>.
in other words:
var allEmployees = from e in empTree.ToList<Employee>( )
select e;
is same as:
var allEmployees = from e in empTree.ToList( )
select e;
Note from the Author or Editor: The paragraph under the code in Step 7 is outdated and refers to an older version of the LINQ library that predates the use of var and type inference. The entire paragraph should be removed.
|
Moataz |
Dec 18, 2013 |
|
Printed |
Page 679
whole page |
Both images on p. 679 show the "title" ComboBox populated with bound data, but the steps on p.677 postpone how to do data binding for the ComboBox until p.684. The images on p. 679 should show the ComboBox as empty.
Note from the Author or Editor: The reader is correct. In the next edition, the images on page 679 should show the Title combo box empty
|
Anonymous |
Feb 15, 2014 |
|
Printed |
Page 726
after step 14 |
Text does not mention "Choose Data Source" wizard page.
Step14a should be "On the Choose Data Source page, select SQL Server."
Note from the Author or Editor: Unfortunately, this is one of the issues with the stateful nature of this wizard. The first time you run this wizard, the Choose Data Source page appears, but on subsequent runs Visual Studio remembers your choice and goes directly to the Connection Properties page.
I will add a note about this in the next edition of the book.
|
Anonymous |
Feb 15, 2014 |
|