Programming C# 5.0 by Ian Griffiths