I love this book, it's not the usual 'how to learn by building a web store'. The chapters are arranged by questions and the detailed answers are much more practical as a learning tool and a reference for those experienced with C#
I’m currently reading it, and am amazed by the clear and in-depth treatment of the subjects. A must-read for every developer. Especially considering the price, it’s an incredibly high quality/price ratio.
Why should I Purchase this eBook?
Solid Foundation and Handy Reference Guide
C# has been around for a very long time, but its constant growth means there’s always more to learn. Organized around concepts, this eBook aims to provide a concise, yet solid foundation in C# and .NET. Use these concepts to deepen your existing knowledge, to learn new features OR to crack your next .NET Interview.
Available in multiple reading formats
If you use an e-reader, it's probably a Kindle or an iPad. This 500 pages eBook is available in PDF, ePub (iPad) and Mobi (Kindle).
Latest information on C# and .NET
C# 7 and .NET Core have introduced plenty of new features for the modern developer. This book covers most of the new language features and enhancements in C# 6.0, C# 7.0, C# 8.0 and .NET Core (including v3.0). We believe this knowledge will make you a better C# developer, and help you in your projects.
The eBook comes with a Limited-time discount. Utilize this offer and purchase it today!
I’ve read a big part of your writing, I like it. Straight forward writing, good layout and format and easy to read.
I am looking forward to the next part..
I can truly recommend the book. I've been developing for more than 30 years and have been through many books on many topics. I really like the no nonsense way in which you set out the intricacies of C#.
Thank you for the great book. It really is a great tool to gain some fundamental knowledge about C#.Congrats to the team of dotnetcurry and the authors of the book.
Table of Contents
Download this pdf to view the Table of Contents and some sample chapters.
Section I - .NET and Common Language Runtime (CLR)
Q1. Which platforms can I develop applications for using the .NET framework?
Q2. How is .NET Core different from the .NET framework?
Q3. What is .NET Standard and why does it matter to me?
Q4. How can I create a .NET Standard library and use it from different runtimes?
Q5. What is the Roslyn compiler and how can I use it?
Q6. How did .NET framework evolve since version 1.0?
Q7. How does the version of .NET and C# affect compatibility?
Q8. What should I know about Garbage Collection in .NET?
Q9. What is the best way to consume third party libraries in .NET?
Q10. What are strong-named assemblies and how do I create them?
Section II - The Type System
Q11. How are value and reference types different?
Q12. What is the difference between classes and structs?
Q13. What is boxing and unboxing?
Q14. Why are nullable types applicable only to value types?
Q15. How are enumeration types supported in C#?
Q16. How can multi-dimensional data be modelled using arrays?
Q17. What are some of the less commonly used C# operators?
Q18. How can method parameters be passed by reference?
Q19. When does using anonymous types make sense?
Q20. What does it mean that C# is a type safe language?
Q21. How can dynamic binding be implemented in C#?
Section III - Classes and inheritance
Q22. What is polymorphism and how to implement it in C#?
Q23. What is the meaning of individual accessibility levels?
Q24. What are the advantages and disadvantages of abstract classes over interfaces?
Q25. When should one explicitly implement an interface member?
Q26. What does the 'new' modifier on a method mean?
Q27. How to correctly override the Equals method?
Q28. When and how to overload operators?
Q29. How do delegates and events differ?
Q30. What's special about the IDisposable interface?
Q31. How do finalizers work?
Q32. What is the purpose of static class members?
Q33. When are extension methods useful?
Q34. What are auto-implemented properties and why are they better than public fields?
Q35. What are expression-bodied members?
Section IV - String manipulation
Q36. When can string interpolation be used instead of string formatting?
Q37. How do locale settings affect string manipulation?
Q38. When can string manipulation performance suffer and how to avoid it?
Section V - Generics and Collections
Q39. How can Generics improve code?
Q40. How to implement a generic method or class?
Q41. What are generic type constraints?
Q42. How does the compiler handle the IEnumerable
Q43. What is covariance and contravariance?
Q44. How to implement a method returning an IEnumerable?
Q45. What advantages do collection classes have over arrays?
Q46. Why are there so many collection classes and which one should I use?
Q47. What problem do concurrent collections solve?
Q48. How are immutable collections different from other collections?
Section VI - LINQ
Q49. What is the basic structure of a LINQ query?
Q50. How is LINQ query syntax translated to C# method calls?
Q51. How to express inner and outer joins using LINQ?
Q52. Which set manipulation operations are available in LINQ?
Q53. How can LINQ query results be aggregated?
Q54. How can LINQ query results be grouped?
Q55. How can LINQ query results be reused without reevaluating?
Q56. When and how is a LINQ query executed and how does this affect performance?
Q57. How are lambda expressions used in LINQ queries?
Q58. When should my function return IQueryable
and when IEnumerable ?
Section VII - Parallel and Asynchronous programming
Q59. What are the differences between concurrent, multithreaded and asynchronous programming?
Q60. Which Timer class should I use and when?
Q61. How to create a new thread and manage its lifetime?
Q62. What is a critical section and how to correctly implement it?
Q63. How to manage multiple threads in .NET framework?
Q64. What abstractions for multithreaded programming are provided by the .NET framework?
Q65. What is the recommended asynchronous pattern in .NET?
Q66. What is an Asynchronous programming model?
Q67. What is an Event-based asynchronous pattern?
Q68. In what order is code executed when using async and await?
Q69. What is the best way to start using asynchronous methods in existing code?
Q70. What are some of the common pitfalls when using async and await?
Q71. How are exceptions handled in asynchronous code?
Q72. What are the best practices for asynchronous file operations?
Section VIII - Serialization and Reflection
Q73. What types of serialization are supported in the .NET framework?
Q74. What is reflection and what makes it possible?
Q75. What are potential dangers of using reflection?
Q76. When to create custom attributes and how to inspect them at runtime?
Section IX - C# 6, 7
Q77. How has C# changed since its first version (C# v1.0 to 7.0)?
Q78. How to upgrade older versions of C# code to C# 6.0?
Q79. How did tuple support change with C# 7?
Q80. What are local functions and when can they be useful?
Q81. What is pattern matching and how is it supported in C# 7?
Q82. What is a discard and when can it be used?
Q83. What improvements for asynchronous programming have been introduced in C# 7?
Q84. How was support for passing values by reference expanded in C# 7?
Q85. How to handle Errors in C# (v6, v7)
Q86. What Functional Programming Features are supported in C#
Section X - A PEEK INTO THE FUTURE
Q87. What are the major new features in C# 8?
Q88. How are .NET Core and .NET Standard evolving?