Effective C# (Covers C# 6.0), (includes Content Update Program): 50 Specific Ways to Improve Your C#, 3rd Edition
©2017 |Addison-Wesley Professional | Available
©2017 |Addison-Wesley Professional | Available
In Effective C#, Third Edition, respected .NET expert Bill Wagner identifies 50 ways to harness the full power of the C# 6.0 language to write exceptionally robust, efficient, and well-performing code. Reflecting the growing sophistication of the C# language and its development community, Wagner has identified dozens of new ways to write better code. This edition’s new solutions include some that take advantage of generics and several that are more focused on LINQ, as well as a full chapter of advanced best practices for working with exceptions.
Wagner’s clear, practical explanations, expert tips, and realistic code examples have made Effective C# indispensable to hundreds of thousands of developers. Drawing on his unsurpassed C# experience, he addresses everything from resource management to multicore support, and reveals how to avoid common pitfalls in the language and its .NET environment. Teaches how to choose the most effective solution when multiple options exist, and how to write code that’s far easier to maintain and improve.
Praise for Effective C#, Second Edition
“Being an effective .NET developer requires one to have a deep understanding of the language of their choice. Wagner’s book provides the reader with that knowledge via well-reasoned arguments and insight. Whether you’re new to C# or you’ve been using it for years, you’ll learn something new when you read this book.”
—Jason Bock, Principal Consultant, Magenic
“If you’re at all like me, you have collected a handful of C# language pearls that have immediately transformed your abilities as a professional developer. What you hold in your hands is quite possibly the best collection of these tips that have ever been assembled. Bill has managed to exceed my wildest expectations with the latest edition in his eponymous Effective C#.”
—Bill Craun, Principal Consultant, Ambassador Solutions
“Effective C#, Second Edition, is a must-read for anyone building high performance and/or highly scalable applications. Bill has that rare and awesome ability to take an amazingly complex problem and break it down into human, digestible, and understandable chunks.”
—Josh Holmes, Architect Evangelist, Microsoft
“Bill has done it again. This book is a concise collection of invaluable tips for any C# developer. Learn one tip every day, and you’ll become a much better C# developer after fifty days!”
—Claudio Lassala, Lead Developer, EPS Software/CODE Magazine
“A fountain of knowledge and understanding of the C# language. Bill gives insight to what happens under the covers of the .NET runtime based on what you write in your code and teaches pragmatic practices that lead to cleaner, easier to write, and more understandable code. A great mix of tips, tricks, and deep understanding . . . that every C# developer should read.”
—Brian Noyes, Chief Architect, IDesign Inc. (www.idesign.net)
“Effective C# is a must-have for every C# developer. Period. Its pragmatic advice on code design is invaluable.”
—Shawn Wildermuth, Microsoft MVP (C#), Author, Trainer, and Speaker
“In this book Bill Wagner provides practical explanations of how to use the most important features in the C# language. His deep knowledge and sophisticated communication skills illuminate the new features in C# so that you can use them to write programs that are more concise and easier to maintain.”
—Charlie Calvert, Microsoft C# Community Program Manager
This product is part of the following series. Click on a series title to see the full list of products in the series.
Chapter 1: C# Language Idioms 1
Item 1: Prefer Implicitly Typed Local Variables 1
Item 2: Prefer readonly to const 7
Item 3: Prefer the is or as Operators to Casts 12
Item 4: Replace string.Format() with Interpolated Strings 19
Item 5: Prefer FormattableString for Culture-Specific Strings 23
Item 6: Avoid String-ly Typed APIs 26
Item 7: Express Callbacks with Delegates 28
Item 8: Use the Null Conditional Operator for Event Invocations 31
Item 9: Minimize Boxing and Unboxing 34
Item 10: Use the new Modifier Only to React to Base Class Updates 38
Chapter 2: .NET Resource Management 43
Item 11: Understand .NET Resource Management 43
Item 12: Prefer Member Initializers to Assignment Statements 48
Item 13: Use Proper Initialization for Static Class Members 51
Item 14: Minimize Duplicate Initialization Logic 53
Item 15: Avoid Creating Unnecessary Objects 61
Item 16: Never Call Virtual Functions in Constructors 65
Item 17: Implement the Standard Dispose Pattern 68
Chapter 3: Working with Generics 77
Item 18: Always Define Constraints That Are Minimal and Sufficient 79
Item 19: Specialize Generic Algorithms Using Runtime Type Checking 85
Item 20: Implement Ordering Relations with IComparable<T> and IComparer<T> 92
Item 21: Always Create Generic Classes That Support Disposable Type Parameters 98
Item 22: Support Generic Covariance and Contravariance 101
Item 23: Use Delegates to Define Method Constraints on Type Parameters 107
Item 24: Do Not Create Generic Specialization on Base Classes or Interfaces 112
Item 25: Prefer Generic Methods Unless Type Parameters Are Instance Fields 116
Item 26: Implement Classic Interfaces in Addition to Generic Interfaces 120
Item 27: Augment Minimal Interface Contracts with Extension Methods 126
Item 28: Consider Enhancing Constructed Types with Extension Methods 130
Chapter 4: Working with LINQ 133
Item 29: Prefer Iterator Methods to Returning Collections 133
Item 30: Prefer Query Syntax to Loops 139
Item 31: Create Composable APIs for Sequences 144
Item 32: Decouple Iterations from Actions, Predicates, and Functions 151
Item 33: Generate Sequence Items as Requested 154
Item 34: Loosen Coupling by Using Function Parameters 157
Item 35: Never Overload Extension Methods 163
Item 36: Understand How Query Expressions Map to Method Calls 167
Item 37: Prefer Lazy Evaluation to Eager Evaluation in Queries 179
Item 38: Prefer Lambda Expressions to Methods 184
Item 39: Avoid Throwing Exceptions in Functions and Actions 188
Item 40: Distinguish Early from Deferred Execution 191
Item 41: Avoid Capturing Expensive Resources 195
Item 42: Distinguish between IEnumerable and IQueryable Data Sources 208
Item 43: Use Single() and First() to Enforce Semantic Expectations on Queries 212
Item 44: Avoid Modifying Bound Variables 215
Chapter 5: Exception Practices 221
Item 45: Use Exceptions to Report Method Contract Failures 221
Item 46: Utilize using and try/finally for Resource Cleanup 225
Item 47: Create Complete Application-Specific Exception Classes 232
Item 48: Prefer the Strong Exception Guarantee 237
Item 49: Prefer Exception Filters to catch and re-throw 245
Item 50: Leverage Side Effects in Exception Filters 249
Pearson offers affordable and accessible purchase options to meet the needs of your students. Connect with us to learn more.
K12 Educators: Contact your Savvas Learning Company Account General Manager for purchase options. Instant Access ISBNs are for individuals purchasing with credit cards or PayPal.
Savvas Learning Company is a trademark of Savvas Learning Company LLC.
Bill Wagner creates .NET learning materials for Microsoft. He is one of the world’s foremost C# experts and is a member of the ECMA C# Standards Committee. The president of Humanitarian Toolbox, he also now serves on the .NET Foundation Advisory Council and Technical Steering Committees. Wagner has worked with companies ranging from start-ups to enterprises, improving development processes and growing development teams. An internationally recognized writer, he authored this book’s first two editions, as well as More Effective C# . He holds a B.S. in computer science from the University of Illinois at Champaign-Urbana.
We're sorry! We don't recognize your username or password. Please try again.
The work is protected by local and international copyright laws and is provided solely for the use of instructors in teaching their courses and assessing student learning.
You have successfully signed out and will be required to sign back in should you need to download more resources.