Essential C# 4.0, 3/e by Mark Michaelis