Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C#, 2nd Edition
- By Bill Wagner
- Published Mar 5, 2010 by Addison-Wesley Professional. Part of the Effective Software Development Series series.
- Copyright 2010
- Dimensions: 7 X 9-1/8
- Pages: 352
- Edition: 2nd
- ISBN-10: 0-321-65870-1
- ISBN-13: 978-0-321-65870-8
Register your product to gain access to bonus material or receive a coupon.
Product Author Bios
With more than twenty years of experience, Bill Wagner, SRT Solutions cofounder, is a recognized expert in software design and engineering, specializing in C#, .NET, and the Azure platform. He serves as Michigan’s Regional Director for Microsoft and is a multiyear winner of Microsoft’s MVP award. An internationally recognized writer, Bill is the author of the first edition of this book and More Effective C# (Addison-Wesley, 2009) and currently writes a column on the Microsoft C# Developer Center. Bill earned a B.S. in computer science from the University of Illinois at Champaign-Urbana.
C# has matured over the past decade: It’s now a rich language with generics, functional programming concepts, and support for both static and dynamic typing. This palette of techniques provides great tools for many different idioms, but there are also many ways to make mistakes. In Effective C#, Second Edition, respected .NET expert Bill Wagner identifies fifty ways you can leverage the full power of the C# 4.0 language to express your designs concisely and clearly.
Effective C#, Second Edition, follows a clear format that makes it indispensable to hundreds of thousands of developers: clear, practical explanations, expert tips, and plenty of realistic code examples. Drawing on his unsurpassed C# experience, Wagner addresses everything from types to resource management to dynamic typing to multicore support in the C# language and the .NET framework. Along the way, he shows how to avoid common pitfalls in the C# language and the .NET environment. You’ll learn how to
- Use both types of C# constants for efficiency and maintainability (see Item 2)
- Employ immutable data types to promote multicore processing (see Item 20)
- Minimize garbage collection, boxing, and unboxing (see Items 16 and 45)
- Take full advantage of interfaces and delegates (see Items 22 though 25)
- Make the most of the parallel framework (see Items 35 through 37)
- Use duck typing in C# (see Item 38)
- Spot the advantages of the dynamic and Expression types over reflection (see Items 42 and 43)
- Assess why query expressions are better than loops (see Item 8)
- Understand how generic covariance and contravariance affect your designs (see Item 29)
- See how optional parameters can minimize the number of method overloads (see Item 10)
You’re already a successful C# programmer–this book will help you become an outstanding one.
Please visit the author's companion site at srtsolutions.com/blogs/billwagner.
You can download the code samples from elevate.codeplex.com.
18 of 19 people found the following review helpful
A new edition brings new insight to C# on .NET 4.0,
This review is from: Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C# (2nd Edition) (Effective Software Development Series) (Paperback)I have both editions of "Effective C#". The older, first edition did not have lambda expressions, LINQ, or generics (though it hinted at generics towards the end). In the second edition, tips (called "Items") that have since fallen out of practice are weeded out and are replaced with fresh concepts from .NET 2.0, through 4.0.
The items are written in a very clear manner. Most of the figures are illustrative of the concepts. Some of the pictures aren't quite as clear as they could be (.NET's Garbage Collector sticks out in my mind - Bill! read some Tufte! :) but for the most part, each item gave a firm understanding. I could read the first and last paragraph of each item to get a clear bird's eye explanation. Later, I would pore over the details with a highlighter and come away enlightened.
This book has a sister - "More Effective C#". This was released PRIOR to "Effective C# - Second Edition". I own that copy too, and it's dog-eared by now. The two... Read more
28 of 32 people found the following review helpful
Would you tell me, please, which way I ought to code from here?,
This review is from: Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C# (2nd Edition) (Effective Software Development Series) (Paperback)I should be clear, I am not criticizing this book as being "bad", but it turns out to have been the least useful C# book I've purchased. This is admittedly in part due to my own preferences and perceptions about what I need from various C# books.
There is a quote from Alice in Wonderland that I find quite applicable here:
Alice: Would you tell me, please, which way I ought to go from here?
The Cat: That depends a good deal on where you want to get to.
This quote kept coming to mind as I read through all 50 tips. They aren't really tips so much as, well, good ideas, assuming what the author is describing is what you want to do. If it isn't what you want to do, any given tip is either not applicable, or actually a bad idea.
I found myself thinking, about each tip, one of three things:
1) Well, yes, of course, that's a good best practice. For most of these, I already knew that. The only one that impressed me was using readonly vs... Read more
29 of 36 people found the following review helpful
Poor Kindle Edition,
This review is from: Effective C# (Covers C# 4.0): 50 Specific Ways to Improve Your C# (2nd Edition) (Effective Software Development Series) (Kindle Edition)The Kindle edition uses different font weights so that the text is shown differently from the code.
a) A normal black for the text; and
b) a completely invisible grey for the code.
If you have any desire to actually see the code in this book, don't bother with the Kindle edition.
The conversion was very shoddy.
› See all 38 customer reviews...
Online Sample Chapters
Table of Contents
Chapter 1: C# Language Idioms 1
Item 1: Use Properties Instead of Accessible Data Members 1
Item 2: Prefer readonly to const 8
Item 3: Prefer the is or as Operators to Casts 12
Item 4: Use Conditional Attributes Instead of #if 20
Item 5: Always Provide ToString() 28
Item 6: Understand the Relationships Among the Many Different Concepts of Equality 36
Item 7: Understand the Pitfalls of GetHashCode() 44
Item 8: Prefer Query Syntax to Loops 51
Item 9: Avoid Conversion Operators in Your APIs 56
Item 10: Use Optional Parameters to Minimize Method Overloads 60
Item 11: Understand the Attraction of Small Functions 64
Chapter 2: .NET Resource Management 69
Item 12: Prefer Member Initializers to Assignment Statements 74
Item 13: Use Proper Initialization for Static Class Members 77
Item 14: Minimize Duplicate Initialization Logic 79
Item 15: Utilize using and try/finally for Resource Cleanup 87
Item 16: Avoid Creating Unnecessary Objects 94
Item 17: Implement the Standard Dispose Pattern 98
Item 18: Distinguish Between Value Types and Reference Types 104
Item 19: Ensure That 0 Is a Valid State for Value Types 110
Item 20: Prefer Immutable Atomic Value Types 114
Chapter 3: Expressing Designs in C# 125
Item 21: Limit Visibility of Your Types 126
Item 22: Prefer Defining and Implementing Interfaces to Inheritance 129
Item 23: Understand How Interface Methods Differ from Virtual Methods 139
Item 24: Express Callbacks with Delegates 143
Item 25: Implement the Event Pattern for Notifications 146
Item 26: Avoid Returning References to Internal Class Objects 154
Item 27: Prefer Making Your Types Serializable 157
Item 28: Create Large-Grain Internet Service APIs 166
Item 29: Support Generic Covariance and Contravariance 171
Chapter 4: Working with the Framework 179
Item 30: Prefer Overrides to Event Handlers 179
Item 31: Implement Ordering Relations with IComparable<T> and IComparer<T> 183
Item 32: Avoid ICloneable 190
Item 33: Use the new Modifier Only to React to Base Class Updates 194
Item 34: Avoid Overloading Methods Defined in Base Classes 198
Item 35: Learn How PLINQ Implements Parallel Algorithms 203
Item 36: Understand How to Use PLINQ for I/O Bound Operations 215
Item 37: Construct Parallel Algorithms with Exceptions in Mind 220
Chapter 5: Dynamic Programming in C# 227
Item 38: Understand the Pros and Cons of Dynamic 227
Item 39: Use Dynamic to Leverage the Runtime Type of Generic Type Parameters 236
Item 40: Use Dynamic for Parameters That Receive Anonymous Types 239
Item 41: Use DynamicObject or IDynamicMetaObjectProvider for Data-Driven Dynamic Types 243
Item 42: Understand How to Make Use of the Expression API 254
Item 43: Use Expressions to Transform Late Binding into Early Binding 261
Item 44: Minimize Dynamic Objects in Public APIs 267
Chapter 6: Miscellaneous 275
Item 45: Minimize Boxing and Unboxing 275
Item 46: Create Complete Application-Specific Exception Classes 279
Item 47: Prefer the Strong Exception Guarantee 284
Item 48: Prefer Safe Code 294
Item 49: Prefer CLS-Compliant Assemblies 298
Item 50: Prefer Smaller, Cohesive Assemblies 303
Download the sample pages (includes Items 34 and 42 and Index)
Book + eBook Bundle
Book Price $35.99
eBook Price $12.60
eBook formats included
This book includes free shipping!
This book includes free shipping!
Includes EPUB, MOBI, and PDF
About eBook Formats
This eBook includes the following formats, accessible from your Account page after purchase:
EPUBThe open industry format known for its reflowable content and usability on supported mobile devices.
MOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.
PDFThe popular standard, used most often with the free Adobe® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.
Get access to thousands of books and training videos about technology, professional development and digital media from more than 40 leading publishers, including Addison-Wesley, Prentice Hall, Cisco Press, IBM Press, O'Reilly Media, Wrox, Apress, and many more. If you continue your subscription after your 30-day trial, you can receive 30% off a monthly subscription to the Safari Library for up to 12 months. That's a total savings of $199.