Share E-Book
Scan to open this page

Scan with your phone to open this page

AuthorJon Skeet

C# is an amazing language that's up to any challenge you can throw at it. As a C# developer, you also need to be up to the task. C# in Depth, Fourth Edition is the key to unlocking the powerful new features added to the language in C# 5, 6, and 7. Following the expert guidance of C# legend Jon Skeet, readers will master asynchronous functions, expression-bodied members, interpolated strings, tuples, and much more. Key features • Expert guidance • Hands-on examples • Step-by-step guide Audience If you're a C# developer who's comfortable working with the language and wants to really dig in deep, then this book is for you. About the technology .NET developers, will use C# whether they are building an advanced enterprise application or just pushing out a quick ASP.NET app. C# 5, 6 and 7 have added a host of new features to help users write better code with tuples, string interpolation, pattern matching, and more.

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

AI guide
【One-Line Pitch】 A deep-dive guide for experienced C# developers who want to master the language's evolution from C# 2 through C# 7, focusing on the practical application of new features like LINQ, async, and pattern matching to write cleaner, more maintainable code. 【Book Arc】 - **Opening (~0%–10%)**: Introduces the book's philosophy and scope, covering the evolution of C# from versions 2 through 7. It sets the stage by explaining the author's approach, including the use of the Noda Time library as a real-world example, and outlines the key features to be explored, such as expression-bodied members and string interpolation. - **Early (~10%–32%)**: Delves into the foundational features introduced in C# 2 and 3. This section covers generics in depth, including type parameters, the `default` and `typeof` operators, and nullable value types. It also explains delegate improvements, such as variance and compatibility, and introduces iterators, emphasizing the importance of proper disposal and `finally` handling for resource management. - **Middle (~32%–52%)**: Explores C# 3's major additions, focusing on LINQ and its supporting features. This includes namespace alias qualifiers, implicitly typed local variables (`var`) and arrays, and a detailed look at lambda expressions, including variable capture and the generated context classes. The section culminates in how these features combine to enable query expressions and LINQ. - **Late (~52%–75%)**: Covers C# 4 and 5 features, starting with dynamic typing, optional and named parameters, and COM interoperability improvements. It then transitions to asynchronous programming, explaining the fundamentals of async functions, synchronization contexts, and how to model asynchronous methods effectively. - **Ending (~75%–100%)**: Focuses on the newest features in C# 6 and 7, including expression-bodied members, string interpolation, pattern matching, and tuples. The book concludes by demonstrating how these features can be combined to write more expressive and concise code, with a strong emphasis on practical application and readability. 【Key Takeaways】 - **Generics are the bedrock of type-safe, reusable code** (Early): Understanding type parameters, the `default` and `typeof` operators, and nullable value types is essential for writing flexible APIs. The book clarifies the confusing behavior of `GetType()` with nullable types, which can throw exceptions or return unexpected types. (Early) - **Delegate variance and compatibility enable flexible method binding** (Early): C# 2 relaxed the strict signature matching rules, allowing methods with compatible but not identical signatures to be used as delegates. This is crucial for building extensible event systems and callbacks. (Early) - **Iterators require careful resource management** (Early): The `using` statement and proper `Dispose` calls are critical when working with iterators, especially when chaining sequences. The book highlights that failing to dispose of an iterator can lead to resource leaks, a detail often overlooked. (Early) - **`var` and implicitly typed arrays reduce ceremony without losing type safety** (Middle): Using `var` for local variables, especially with complex generic types like `Dictionary<string, List<decimal>>`, improves readability. The author's initial skepticism evolved into widespread adoption, showing that the inferred type is almost always clear from context. (Middle) - **Lambda expressions capture variables, not values** (Middle): The compiler generates a context class to hold captured variables, ensuring that modifications are visible across invocations. Understanding this mechanism is key to avoiding subtle bugs in asynchronous or event-driven code. (Middle) - **Dynamic typing in C# 4 is a powerful tool with limitations** (Late): It simplifies interop and reflection-heavy scenarios but comes with surprises and performance costs. The book advises using it judiciously, as it bypasses compile-time checking. (Late) - **Async/await is about modeling asynchronous execution, not just syntax** (Late): The book breaks down the fundamentals of synchronization contexts and how to think about asynchronous methods, which is more important than the `async` and `await` keywords themselves. (Late) 【Reading Tips】 - **Skim the early chapters on C# 2/3 if you're already comfortable with generics and LINQ**, but do a deep read on the sections about delegate variance and iterator disposal—these are subtle and often misunderstood. - **Pay close attention to the lambda expression chapter**, especially the part about variable capture. The compiler-generated context classes are a common source of bugs, and the book's examples are excellent for understanding this. - **For the async chapter, focus on the "Thinking about asynchrony" section** before diving into code. Understanding synchronization contexts is more valuable than memorizing syntax. - **Use the Noda Time examples as a practical case study** to see how features are applied in a real, complex library. This is more instructive than isolated snippets. - **The chapters on C# 6 and 7 are quick reads**; they're mostly about syntactic sugar. Skim them to learn the new syntax, but don't expect deep conceptual shifts. 【Coverage Limits】 The excerpts cover the book's structure and key concepts from C# 2 through C# 7, but do not include detailed code listings for later chapters on pattern matching and tuples. The guide synthesizes the available material without inventing specific examples or figures not present in the source.
Page 10
n versioning 137 4.3 COM interoperability improvements 138 Linking primary interop assemblies 139 ■ Optional parameters in COM 140 ■ Named indexers 142 4.4...
View in text
Excerpt 2
n code, which is why you may never have heard of it before. I’ve tried to use terms like this sparingly, but my view is that it’s worth becoming some- what f...
View in text
Excerpt 3
es StringProvider stringProvider = ...; Any way you might ObjectProvider objectProvider = create a StringProvider new ObjectProvider(stringP...
View in text
Excerpt 4
variables of the relevant types called order, customer, and item, you can easily use an anonymous type to represent the flattened information: var flattenedI...
View in text
Excerpt 5
unters dynamic values. 4.1.3 A brief look behind the scenes You’re probably aware by now that I enjoy looking at the IL that the C# compiler uses to implemen...
View in text
Excerpt 6
how the COM library you’re working with is structured. For example, if it uses a lot of ref parameters and VARIANT return types, the difference will CHAPTER ...
View in text
Excerpt 7
method static async Task MainAsync() { Deliberately passes Task<int> task = ComputeLengthAsync(null); a b a d a r gu m ent Console.WriteL...
View in text
Excerpt 8
ther calls to MoveNext() are part of the infrastructure for resuming the state machine from a paused state, and those don’t need the associated task. You’ll ...
View in text
Tags
AI categories
ProgrammingC#
ISBN: 1617294535
Publish Year: 2019
Language: English
Pages: 528
File Format: PDF
File Size: 5.0 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Generating text preview…