Latest Posts
-
C# 13 Expansion!
The C# 13 Expansion has arrived!
-
Sixth Edition Early Access
Early Access Update
-
June 2024 Update for the Sixth Edition
The sixth edition is most likely no sooner than November.
-
February 2024 Update for the Sixth Edition
The sixth edition is no earlier than June of 2024.
-
Another Update for the Sixth Edition
The sixth edition probably won’t be any sooner than Q2 (April through June) of 2024.
-
Can self-taught programmers make it?
The short answer is, “yes,” but the long answer is complicated. On one hand, no formal education can create an uphill battle. On the other hand, all good programmers are self taught.
-
C# 12 Expansion
C# 12 is arriving soon, and so I’ve got a C# 12 Expansion ready to go!
-
An Overdue Update for the Sixth Edition
I had hoped to get the sixth edition out in conjunction with the release of C# 12 and .NET 8 in November, but the sixth edition won’t be ready until December or into 2024.
-
C# 11 Expansion!
Announcing a new (free!) expansion for the C# Player’s Guide!
-
Price Increase
The print book’s price is going up. Read to see why.
-
Sixth Edition MEGA UPDATE
Another update, with a lot of details, on the sixth edition (still quite a ways out).
-
Sixth Edition Update
The sixth edition is still in the works, but the anticipated date is still not close.
-
WinForms Book Recommendations
I frequently get asked, “What book is like yours that could help me with X. In this post, I’ll answer that question where X is WinForms.”
-
Performance of 2D Arrays
Compares the performance of a 2D array styles.
-
6th Edition is Coming!
This is an announcement post that the 6th Edition is coming.
-
Generic Math Part 4: All Generic Math Interfaces
In the final post about generic math, we’ll look at all of the operator-related interfaces defined in the Base Class Library.
-
Generic Math Part 3: Making an Interface with Operators
In this second post about generic math, we’ll begin to search for a solution to our problem by making an interface with an operator in it.
-
Generic Math Part 2: Making an Interface with Operators
In this second post about generic math, we’ll begin to search for a solution to our problem by making an interface with an operator in it.
-
Generic Math Part 1: The Problem
The first post in a series about generic math, discussing a sample problem.
-
UTF-8 Strings in C# 11
A discussion about the new UTF-8 strings in C# 11.
-
The Nuances of Bit Shifting
This post talks about why C# now has two right bit shift operators and how they are different from each other.
-
Representing Integers in Binary
This post describes how the computing world takes advantage of base-2/binary counting to represent integers.
-
Counting in Other Bases
A discussion in how to work in other bases besides the common base-10 decimal system. This serves as a foundation for some interesting conversations around how the integer types store values in binary.
-
Characters, Strings, and Encodings
A discussion on character encodings and how C# uses them.
-
Namespace ‘Hacks’ in Project Files
Some interesting little tricks for working with namespaces in .csproj files.
-
How much math do I need to know to program?
A discussion about how much math you need to know to be successful at programming.
-
Handling Bad Inputs Early in the Book
I get a lot of questions in the book about how to handle bad user input. Situations like a user typing in letters when numbers were expected, etc. I’m planning on doing some revising for future editions to address this more directly. This post is my current thinking on how this might be done in the 6th Edition. TL;DR: Early in the book, we don’t have good tools for validating input. It is just fine (and expected) to just handle the “happy path” and not worry too much about bad inputs until you learn more tools throughout the book.
-
Parsing Enumerations
The book discusses enumerations in depth, but this post is some supplemental information about converting to and from strings to let a human pick one of the various enumeration options.
-
Struct Layout: More Than Words
Elaborates on padding in struct layouts beyond just word sizes.
-
Mysterious numbers
For what number is this true?
x == -x
-
More On Value And Reference Types
I sometimes hear people say, “Value types get stored on the stack and reference types get stored on the heap.” That’s a common misconception. There’s a bit of reason behind it, but reality is quite a bit more complex than that.
-
Struct Layout Basics
Describes how struct data is organized in memory.
-
A Range Hack
A little hack to make
foreach (int number in 1..10)
work in C#.
-
How to Ask Questions
Covers some guidelines and suggestions to get the most when asking a question in the Discord server. These guidelines also generally apply to asking technical questions anywhere on the web.
-
Stepping Into a new Run of an Application
This post discusses how to debug your program but pause execution before the first line even runs.
-
Switches and Jump Tables
This post looks at performance around switches in C# when compared to
if
statements.
-
Analyzing the Cost of Exception Handling
The book claims that exceptions are slower than normal procedural code, but the question is, how much slower is it?
-
Comparing the Performance of
for
vs.foreach
LoopsMany things that can be done with a
for
loop can also be done with aforeach
loop. Which one is faster? Which one should you pick?
-
Interfaces vs. Abstract Base Classes
Discusses the times when an interface or an abstract base class is preferred to the other.
-
The Blog is Here!
Announcement for the new blog.
-
Capitalization Conventions
Talks about how capitalization of identifiers is typically handled in C#.
-
What happens if you throw
null
?You can throw an exception, but what happens if you try to throw
null
instead?
-
Which version of .NET am I using?
Describes how to determine which version of .NET your project is using.
-
5th Edition available in print!
The 5th Edition is now available in print form from Amazon!
-
5th Edition available in digital form on Gumroad!
The 5th Edition is now available in print form from Amazon!
-
5th Edition Release Candidate available
The 5th Edition Release Candidate is now available on Gumroad.
-
An overdue Early Access update
The Early Access is still coming along. Sorry about the lack of updates.
-
Early Access
Early Access
-
Early Access
Early Access
-
The 4th Edition Upgrade Companion is now available.
The Upgrade Companion is a document that contains all of the changes between 4th and 5th Editions. It is essentially a “diff” between the two versions, and is a shorthand way to get an updated copy of the C# Player’s Guide, if you’ve got the 4th Edition already.
-
Early Access
Early Access
-
Directory.Delete
A story about a time I nearly destroyed my computer with
Directory.Delete
-
Early Access
Early Access
-
Early Access
Early Access
-
Can Structs Have Methods?
A discussion on when it is appropriate for structs to have methods.
-
5th Edition Early Access
5th Edition Early Access is now available on Gumroad!
-
5th Edition on the Way!
The 5th Edition is officially in progress!
-
4.0.7 has Arrived!
Patch update 4.0.7 is now available.
-
4.0.6 has Arrived!
Patch update 4.0.6 is now available.
-
4.0.5 has Arrived!
Patch update 4.0.5 is now available.
-
4.0.4 has Arrived!
Patch update 4.0.4 is now available.
-
4.0.3 has Arrived!
Patch update 4.0.3 is now available.
-
4.0.3 has Arrived!
Patch update 4.0.3 is now available.
-
The Fourth Edition is now available on Amazon!
The Fourth Edition is now available on Amazon.
-
Update on the print edition
The ISBN issues are resolved. Just waiting on Amazon’s review.
-
Print edition update
The print edition is only waiting on the ISBN process now.
-
The PDF 4th Edition is Available!
The digital PDF 4th Edition is now available on Gumroad!
-
Update delay
This week’s update is delayed by a day.
-
4th Edition Release Candidate 4
the 4th Edition Release Candidate 4 is now available.
-
4th Edition Release Candidate 3
the 4th Edition Release Candidate 3 is now available.
-
4th Edition Release Candidate 2
the 4th Edition Release Candidate 2 is now available.
-
4th Edition Release Candidate 1
the 4th Edition Release Candidate 1 is now available.
-
4th Edition Early Access 17
The 4th Edition Early Access 17 is now available.
-
4th Edition Early Access 16
The 4th Edition Early Access 16 is now available.
-
4th Edition Early Access 15
The 4th Edition Early Access 15 is now available.
-
4th Edition Early Access 14
The 4th Edition Early Access 14 is now available.
-
4th Edition Early Access 13
The 4th Edition Early Access 13 is now available.
-
4th Edition Early Access 12
The 4th Edition Early Access 12 is now available.
-
4th Edition Early Access 11
The 4th Edition Early Access 11 is now available.
-
4th Edition Early Access 10
The 4th Edition Early Access 10 is now available.
-
4th Edition Early Access 9
The 4th Edition Early Access 9 is now available.
-
4th Edition Early Access 8
The 4th Edition Early Access 8 is now available.
-
4th Edition Early Access 7
The 4th Edition Early Access 7 is now available.
-
4th Edition Early Access 6
The 4th Edition Early Access 6 is now available.
-
4th Edition Early Access 5
The 4th Edition Early Access 5 is now available.
-
4th Edition Early Access 4
The 4th Edition Early Access 4 is now available.
-
4th Edition Early Access 3
The 4th Edition Early Access 3 is now available.
-
4th Edition Early Access 2
The 4th Edition Early Access 2 is now available.
-
4th Edition Early Access 2
The 4th Edition Early Access 2 is now available.
-
Moving toward early access
Some notes on where I’m at, since it has been a while.
-
Plans for early access
An update on where things are currently at, and some thoughts about early access and the release date.
-
1 January 2020
A status update for the 4th Edition
-
30 December 2019
A status update for the 4th Edition
-
15 December 2019
A status update for the 4th Edition.