Essential C# 5.0, 4/E by Eric Lippert & Mark Michaelis