O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

C# 7.0 Pocket Reference

Book Description

When you need answers for programming with C# 7.0, this tightly focused reference tells you exactly what you need to know—without long introductions or bloated examples. Easy-to-browse and ideal as a quick reference, this guide will help experienced C#, Java, and C++ programmers get up to speed with the latest version of the C# language.

All programs and code snippets in this book are available as interactive samples in LINQPad. You can edit these samples and instantly see the results without needing to set up projects in Visual Studio. Written by the authors of C# 7.0 in a Nutshell, this pocket reference covers C# 7.0 without skimping on detail, including:

  • All of C#’s fundamentals
  • Features new to C# 7.0, including tuples, pattern matching, and deconstructors
  • Advanced topics: operator overloading, type constraints, iterators, nullable types, operator lifting, lambda expressions, and closures
  • LINQ: sequences, lazy execution, standard query operators, and query expressions
  • Unsafe code and pointers, custom attributes, preprocessor directives, and XML documentation

Table of Contents

  1. Conventions Used in This Book
  2. Using Code Examples
  3. O’Reilly Safari
  4. How to Contact Us
  5. A First C# Program
    1. Compilation
  6. Syntax
    1. Identifiers and Keywords
    2. Literals, Punctuators, and Operators
    3. Comments
  7. Type Basics
    1. Predefined Type Examples
    2. Custom Type Examples
    3. Conversions
    4. Value Types Versus Reference Types
    5. Predefined Type Taxonomy
  8. Numeric Types
    1. Numeric Literals
    2. Numeric Conversions
    3. Arithmetic Operators
    4. Increment and Decrement Operators
    5. Specialized Integral Operations
    6. 8- and 16-Bit Integral Types
    7. Special Float and Double Values
    8. double Versus decimal
    9. Real Number Rounding Errors
  9. Boolean Type and Operators
    1. Equality and Comparison Operators
    2. Conditional Operators
  10. Strings and Characters
    1. String Type
  11. Arrays
    1. Default Element Initialization
    2. Multidimensional Arrays
    3. Simplified Array Initialization Expressions
  12. Variables and Parameters
    1. The Stack and the Heap
    2. Definite Assignment
    3. Default Values
    4. Parameters
    5. var—Implicitly Typed Local Variables
  13. Expressions and Operators
    1. Assignment Expressions
    2. Operator Precedence and Associativity
    3. Operator Table
  14. Null Operators
    1. Null Coalescing Operator
    2. Null-Conditional Operator
  15. Statements
    1. Declaration Statements
    2. Expression Statements
    3. Selection Statements
    4. Iteration Statements
    5. Jump Statements
  16. Namespaces
    1. The using Directive
    2. using static
    3. Rules Within a Namespace
    4. Aliasing Types and Namespaces
  17. Classes
    1. Fields
    2. Methods
    3. Instance Constructors
    4. Deconstructors (C# 7)
    5. Object Initializers
    6. The this Reference
    7. Properties
    8. Indexers
    9. Constants
    10. Static Constructors
    11. Static Classes
    12. Finalizers
    13. Partial Types and Methods
    14. The nameof Operator
  18. Inheritance
    1. Polymorphism
    2. Casting and Reference Conversions
    3. Virtual Function Members
    4. Abstract Classes and Abstract Members
    5. Hiding Inherited Members
    6. Sealing Functions and Classes
    7. The base Keyword
    8. Constructors and Inheritance
    9. Overloading and Resolution
  19. The object Type
    1. Boxing and Unboxing
    2. Static and Runtime Type Checking
    3. The GetType Method and typeof Operator
    4. Object Member Listing
    5. Equals, ReferenceEquals, and GetHashCode
    6. The ToString Method
  20. Structs
    1. Struct Construction Semantics
  21. Access Modifiers
    1. Friend Assemblies
    2. Accessibility Capping
  22. Interfaces
    1. Extending an Interface
    2. Explicit Interface Implementation
    3. Implementing Interface Members Virtually
    4. Reimplementing an Interface in a Subclass
  23. Enums
    1. Enum Conversions
    2. Flags Enums
    3. Enum Operators
  24. Nested Types
  25. Generics
    1. Generic Types
    2. Generic Methods
    3. Declaring Type Parameters
    4. typeof and Unbound Generic Types
    5. The default Generic Value
    6. Generic Constraints
    7. Subclassing Generic Types
    8. Self-Referencing Generic Declarations
    9. Static Data
    10. Covariance
    11. Contravariance
  26. Delegates
    1. Writing Plug-In Methods with Delegates
    2. Multicast Delegates
    3. Instance Versus Static Method Targets
    4. Generic Delegate Types
    5. The Func and Action Delegates
    6. Delegate Compatibility
  27. Events
    1. Standard Event Pattern
    2. Event Accessors
  28. Lambda Expressions
    1. Capturing Outer Variables
    2. Lambda Expressions Versus Local Methods
  29. Anonymous Methods
  30. try Statements and Exceptions
    1. The catch Clause
    2. The finally Block
    3. Throwing Exceptions
    4. Key Properties of System.Exception
    5. Common Exception Types
  31. Enumeration and Iterators
    1. Enumeration
    2. Collection Initializers
    3. Iterators
    4. Iterator Semantics
    5. Composing Sequences
  32. Nullable Types
    1. Nullable<T> Struct
    2. Nullable Conversions
    3. Boxing/Unboxing Nullable Values
    4. Operator Lifting
    5. bool? with & and | Operators
    6. Nullable Types and Null Operators
  33. Extension Methods
    1. Extension Method Chaining
    2. Ambiguity and Resolution
  34. Anonymous Types
  35. Tuples (C# 7)
    1. Naming Tuple Elements
    2. Deconstructing Tuples
  36. LINQ
    1. LINQ Fundamentals
    2. Deferred Execution
    3. Standard Query Operators
    4. Chaining Query Operators
    5. Query Expressions
    6. The let Keyword
    7. Query Continuations
    8. Multiple Generators
    9. Joining
    10. Ordering
    11. Grouping
    12. OfType and Cast
  37. Dynamic Binding
    1. Static Binding Versus Dynamic Binding
    2. Custom Binding
    3. Language Binding
    4. RuntimeBinderException
    5. Runtime Representation of dynamic
    6. Dynamic Conversions
    7. var Versus dynamic
    8. Dynamic Expressions
    9. Dynamic Member Overload Resolution
    10. Uncallable Functions
  38. Operator Overloading
    1. Operator Functions
    2. Overloading Equality and Comparison Operators
    3. Custom Implicit and Explicit Conversions
  39. Attributes
    1. Attribute Classes
    2. Named and Positional Attribute Parameters
    3. Attribute Targets
    4. Specifying Multiple Attributes
    5. Writing Custom Attributes
    6. Retrieving Attributes at Runtime
  40. Caller Info Attributes
  41. Asynchronous Functions
    1. The await and async Keywords
    2. Capturing Local State
    3. Writing Asynchronous Functions
    4. Parallelism
    5. Asynchronous Lambda Expressions
  42. Unsafe Code and Pointers
    1. Pointer Basics
    2. Unsafe Code
    3. The fixed Statement
    4. The Pointer-to-Member Operator
    5. Arrays
    6. void*
  43. Preprocessor Directives
    1. Pragma Warning
  44. XML Documentation
    1. Standard XML Documentation Tags
  45. Index