Write Better C#

This book will help you become a better C# programmer. It contains a whole host of useful tips on using C# and .Net.

Jason Roberts

With over 15 years experience, Jason Roberts is a Microsoft .NET MVP, freelance developer, writer and Pluralsight course author. He is the author of multiple books including Clean C#, and C# Tips and writes at his blog DontCodeTired.com. He is an open source contributor and the creator of FeatureToggle. In addition to enterprise software development, he has also designed and developed both Windows Phone and Windows Store apps. He holds a Bachelor of Science degree in computing and is an amateur music producer and landscape photographer.

You can contact him on Twitter as @robertsjason, at his blog DontCodeTired.com or check out his Pluralsight courses.

    • Introduction * About The Author

      • Other Books by Jason Roberts

      • Pluralsight Courses

  • Part 1: Assorted Tips * Merging IEnumerable Sequences with LINQ

    • Auto-Generating Sequences of Integer Values

    • Improving Struct Equality Performance * Overriding Equals() to Improve Performance

    • Creating Generic Methods in Non-Generic Classes

    • Converting Chars to Doubles

    • Non Short Circuiting Conditional Operators * More on & and && * The && Operator

      *   The & Operator
                          *   Using & With Boolean Operands
      
          *   Using & With Integral Operands
      
    • Using C# Keywords for Variable Names

    • Three Part Conditional Numeric Format Strings

    • Customizing the Appearance of Debug Information in Visual Studio * The DebuggerDisplay Attribute

      • The DebuggerBrowsable Attribute
    • Partial Types * Partial Methods * Partial Method Restrictions

    • The Null Coalescing Operator

    • Creating and Using Bit Flag Enums * Defining

      • Manipulating
    • The Continue Statement

    • Preprocessor Directives * Defining Custom Symbols

      • Emitting Warnings

      • Emitting Errors

    • Automatically Stepping Through Code

    • Exceptions in Static Constructors

    • Safe Conversion To and From DateTime Strings

    • Parsing Strings into Numbers with NumberStyles

    • Useful LINQ Set Operations * Concat

      • Union

      • Intersect

      • Except

    • Working with Zip Files * Creating Zip Files

      • Extracting Files

      • Adding Files to Existing Archive

      • Deleting Files from an Existing Archive

    • Comparing Two Lists to Check if they Contain The Same Items

    • Conditional Compilation with the Conditional Attribute

    • Writing Indented Lines of Text

    • Custom Collection Initializers

    • Delaying Creation of Expensive Objects

  • Part 2: Common Design Patterns * The Decorator Pattern

    • The Factory Pattern

    • The Gateway Pattern

    • The Strategy Pattern

    • The Null Object Pattern

  • Part 3: Useful Tools * The NUnit Testing Framework * Test Classes and Test Methods

    *   Asserting Correct Results
    
    *   Advanced Techniques
    
    • The xUnit.net Testing Framework * Test Classes and Test Methods

      • Asserting Correct Results

      • Advanced Techniques

    • Faking with Moq

    • Dependency Injection with Ninject * Using a Dependency Injection Framework

    • BDDfy - A BDD Testing Framework

    • Convention Tests * Using the Supplied ClassTypeHasSpecificNamespace Convention