C# is an evolving language, which makes for some tricky spots in the book and in learning C#.
I'm less concerned with a reader having an old version of C# installed and not being able to use new features. The book does a good job of telling people what version to expect and how to get it installed. What I'm most concerned about is readers learning about all these cool features, then going to, say, Unity, which is targeting an older version of C#, or just some random repository that is using old stuff. Suddenly, things the reader knows can work just suddenly doesn't.
So what is a book to do?
Some options:
Ignore it entirely. The language is presented in the version advertised on the front. If a reader needs to use old stuff, they either get an older version of the book or they just figure it out on their own.
Good: This is obviously the easiest thing to do. Least amount of work.
Good: This takes this one aspect off the table in terms of learning. People don't need to think about versions while they're learning.
Neutral: The version number is on the cover, and really needs to be from a marketing standpoint. It cannot be completely ignored. This proposal would need to be more along the lines of, "The book doesn't draw any special attention to the version and that C# evolves, sometimes rapidly."
Bad: While it keeps things simple, version numbers do matter. Trying to ignore/minimize this as much as possible might defeat the point.
A passing mention. We mention in the introduction that it is an evolving language and that some features may not exist if you need to use an older version.
Good: This is easy to do, and makes people aware that things change. Minimal cost, but relevant to a new C# programmer.
Bad: Those who encounter these problems will be left to their own devices to sort through what to do about it.
Hints for the recent version. Anything that is cutting-edge is clearly marked. For example, anything in the most recent release is clearly marked as a new feature. Or maybe it is the two or three most recent releases. In these cases, the book would ensure that the alternatives are described well so that people who find themselves without the latest and greatest still know what to do.
Good: For people who encounter these problems, knowing that some area is potentially problematic and seeing the workaround can be practical.
Bad: It's always going to be a challenge to know what deserves detailed versioning discussion and what doesn't.
Aggressive version notes. Most things are well annotated about which version they were added in. This would likely be with a little version number "badge" in the margin.
Good: People get to see how the language has evolved. It would feel very alive.
Bad: It's a lot of visual clutter, and the difference between C# 3 and 4 is totally irrelevant to just about everybody.
Decision: Version information can be useful in certain narrow circumstances. But we're not going to call it out aggressively, for all versions or for just recent versions.
We'll accept that some readers may be surprised when they start working in a codebase targeting something older, and need to figure out what it means. This is something they'll be aware of, because the book mentions it, but they'll need to look this up online and figure out what to do about it. In exchange, it means the book can mostly keep prolonged or intrusive version discussions and signaling to only a few places where it adds direct value (like what to install and creating a new project).
C# is an evolving language, which makes for some tricky spots in the book and in learning C#.
I'm less concerned with a reader having an old version of C# installed and not being able to use new features. The book does a good job of telling people what version to expect and how to get it installed. What I'm most concerned about is readers learning about all these cool features, then going to, say, Unity, which is targeting an older version of C#, or just some random repository that is using old stuff. Suddenly, things the reader knows can work just suddenly doesn't.
So what is a book to do?
Some options:
Decision: Version information can be useful in certain narrow circumstances. But we're not going to call it out aggressively, for all versions or for just recent versions.
We'll accept that some readers may be surprised when they start working in a codebase targeting something older, and need to figure out what it means. This is something they'll be aware of, because the book mentions it, but they'll need to look this up online and figure out what to do about it. In exchange, it means the book can mostly keep prolonged or intrusive version discussions and signaling to only a few places where it adds direct value (like what to install and creating a new project).