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