Book description
In More Effective C#, Second Edition, world-renowned .NET expert Bill Wagner identifies and illuminates 50 intermediate-to-advanced techniques for writing exceptionally robust and well-performing C# 7.0 code. Reflecting the growing sophistication of the C# language and its development community, Wagner presents powerful new solutions to problems you’re likely to encounter every day.
Through three editions of Effective C#, Wagner’s clear explanations, expert tips, and realistic code examples have proven invaluable to hundreds of thousands of developers. With the publication of this title, Effective C#, Third Edition, and More Effective C#, Second Edition, have been completely reorganized to provide clear explanations, expert tips, and realistic code examples in a cohesive package for modern C#. More Effective C#, Second Edition, brings the same proven approach to the new features in C# 7.0, helping you perform familiar tasks more efficiently and effectively.
Drawing on his unsurpassed C# experience and key role on global C# standards committees, Wagner addresses object-oriented, functional, and service-oriented approaches to managing data with C#; better ways to express your intent to users and other programmers; and new opportunities to leverage powerful asynchronous and dynamic programming techniques.
- Use properties instead of accessible data members (Item 1)
- Distinguish between value and reference types (Item 4)
- Understand relationships among multiple concepts of equality (Item 9)
- Avoid conversion operators in your APIs (Item 11)
- Understand how interface and virtual methods differ (Item 15)
- Avoid overloading methods defined in base classes (Item 19)
- Create method groups that are clear, minimal, and complete (Item 22)
- Enable immediate error reporting in iterators and async methods (Item 26)
- Use async methods for async work (Item 27)
- Avoid thread allocations and context switches (Item 30)
- Construct PLINQ parallel algorithms with exceptions in mind (Item 36)
- Use the thread pool instead of creating threads (Item 37)
- Use BackgroundWorker for cross-thread communication (Item 38)
- Use the smallest possible scope for lock handles (Item 41)
- Understand the pros and cons of dynamic programming (Item 43)
- Make full use of the expression API (Item 46)
- Minimize dynamic objects in public APIs (Item 47)
You’re already a successful C# programmer: this book will make you an outstanding one.
Register your product at informit.com/register for convenient access to downloads, updates, and corrections as they become available.
Table of contents
- About This E-Book
- Title Page
- Copyright Page
- Dedication Page
- Contents at a Glance
- Contents
- Introduction
-
1. Working with Data Types
- Item 1: Use Properties Instead of Accessible Data Members
- Item 2: Prefer Implicit Properties for Mutable Data
- Item 3: Prefer Immutability for Value Types
- Item 4: Distinguish Between Value Types and Reference Types
- Item 5: Ensure That 0 Is a Valid State for Value Types
- Item 6: Ensure That Properties Behave Like Data
- Item 7: Limit Type Scope by Using Tuples
- Item 8: Define Local Functions on Anonymous Types
- Item 9: Understand the Relationships Among the Many Different Concepts of Equality
- Item 10: Understand the Pitfalls of GetHashCode()
-
2. API Design
- Item 11: Avoid Conversion Operators in Your APIs
- Item 12: Use Optional Parameters to Minimize Method Overloads
- Item 13: Limit Visibility of Your Types
- Item 14: Prefer Defining and Implementing Interfaces to Inheritance
- Item 15: Understand How Interface Methods Differ from Virtual Methods
- Item 16: Implement the Event Pattern for Notifications
- Item 17: Avoid Returning References to Internal Class Objects
- Item 18: Prefer Overrides to Event Handlers
- Item 19: Avoid Overloading Methods Defined in Base Classes
- Item 20: Understand How Events Increase Runtime Coupling Among Objects
- Item 21: Declare Only Nonvirtual Events
- Item 22: Create Method Groups That Are Clear, Minimal, and Complete
- Item 23: Give Partial Classes Partial Methods for Constructors, Mutators, and Event Handlers
- Item 24: Avoid ICloneable Because It Limits Your Design Choices
- Item 25: Limit Array Parameters to params Arrays
- Item 26: Enable Immediate Error Reporting in Iterators and Async Methods Using Local Functions
-
3. Task-Based Asynchronous Programming
- Item 27: Use Async Methods for Async Work
- Item 28: Never Write async void Methods
- Item 29: Avoid Composing Synchronous and Asynchronous Methods
- Item 30: Use Async Methods to Avoid Thread Allocations and Context Switches
- Item 31: Avoid Marshalling Context Unnecessarily
- Item 32: Compose Asynchronous Work Using Task Objects
- Item 33: Consider Implementing the Task Cancellation Protocol
- Item 34: Cache Generalized Async Return Types
-
4. Parallel Processing
- Item 35: Learn How PLINQ Implements Parallel Algorithms
- Item 36: Construct Parallel Algorithms with Exceptions in Mind
- Item 37: Use the Thread Pool Instead of Creating Threads
- Item 38: Use BackgroundWorker for Cross-Thread Communication
- Item 39: Understand Cross-Thread Calls in XAML Environments
- Item 40: Use lock() as Your First Choice for Synchronization
- Item 41: Use the Smallest Possible Scope for Lock Handles
- Item 42: Avoid Calling Unknown Code in Locked Sections
-
5. Dynamic Programming
- Item 43: Understand the Pros and Cons of Dynamic Typing
- Item 44: Use Dynamic Typing to Leverage the Runtime Type of Generic Type Parameters
- Item 45: Use DynamicObject or IDynamicMetaObjectProvider for Data-Driven Dynamic Types
- Item 46: Understand How to Use the Expression API
- Item 47: Minimize Dynamic Objects in Public APIs
- 6. Participate in the Global C# Community
- Index
Product information
- Title: More Effective C# (Includes Content Update Program): 50 Specific Ways to Improve Your C#, 2nd edition
- Author(s):
- Release date: June 2017
- Publisher(s): Addison-Wesley Professional
- ISBN: 9780134579306
You might also like
book
Effective C#: 50 Specific Ways to Improve Your C#, Third Edition
In respected .NET expert Bill Wagner identifies 50 ways to harness the full power of the …
book
C# 9.0 in a Nutshell
When you have questions about C# 9.0 or .NET 5, this best-selling guide has the answers …
video
C# in Depth, 4th Ed, Video Edition
"Jon doesn’t just explain how C# works; he explains how the whole thing holds together as …
book
C# 7.0 in a Nutshell
When you have questions about C# 7.0 or the .NET CLR and its core Framework assemblies, …