The Microsoft C# 4.0 Programming Language

4 Day Course
Hands On

This course has been superseded by the The C# Programming Language course.


Hide all

ntroduction to .NET & C# (2 topics)

  • The .NET Framework; The Common Language Runtime; The Common Type System
  • C# Features; Introduction to namespaces and assemblies

Language Fundamentals (3 topics)

  • Procedures and statements; Data types; Declaring variables; Assignments
  • Conversion; Arithmetic and other operators
  • Control constructs; by value, by reference, named and optional parameters

Types I (5 topics)

  • Type concepts; Classes; Reference types
  • Fields, properties and methods; C#3 Auto-implemented properties
  • Accessibility modifiers; Construction and chaining
  • Instance members; Keyword 'this'
  • The 'null' reference

Types II (6 topics)

  • Structs; Value types
  • Object Initialisers
  • Static; Const & ReadOnly
  • The Singleton & Factory patterns
  • Partial classes
  • Enumerated types

Exception Handling (2 topics)

  • Errors vs. Exceptions; The 'try' block; The 'catch' block; The 'finally' block; Using 'throw'
  • Creating your own exceptions; 'checked' and 'unchecked' expressions.

Inheritance & Polymorphism (4 topics)

  • Concept of inheritance; Substitutability; Extending a simple class
  • 'virtual', 'override' and 'sealed' modifiers
  • Polymorphism
  • Upcasting and safe downcasting

Abstract Classes & Interfaces (2 topics)

  • Abstract classes; Abstract methods and properties
  • Polymorphism with interfaces; Multiple interfaces

Generics & Collections (8 topics)

  • Arrays vs Collections; Array syntax
  • Generic concepts; Using Generic collection classes; List
  • Generic interfaces; IComparable, IComparer & sorting
  • Indexers; C# Iterators, IEnumerable, IEnumerator
  • Using generic methods
  • Co & Contra-variance
  • Constraints; Nullable types
  • Boxing / UnBoxing issues

Delegates & Events (6 topics)

  • Delegates explained
  • Working with delegates
  • Creating your own delegate types
  • Events
  • Evolution of syntax for creating delegate instances
  • Generic delegates

More LINQ (3 topics)

  • Grouping; Joins; LINQ to XML;
  • LINQ to SQL;
  • Overview of LINQ to Entities

Module 12: The Way Ahead (2 topics)

  • Review
  • Follow-on courses

Appendix Module: Namespaces & Assemblies (3 topics)

  • Namespaces; The 'using' statement for namespaces; Assemblies
  • DLLs at compile time and run Time; The Global Assembly Cache (GAC)
  • Versioning using public/private key cryptography

Appendix Module: Operator Overloading (3 topics)

  • Why operator overloading is useful
  • When to overload
  • Implicit conversions; explicit conversions

Appendix Module: C# & .NET timeline (2 topics)

  • Which versions/functionality came when
  • C# syntax changes by version

Appendix Module: Managing Resources (5 topics)

  • Garbage collection and its impacts
  • Finalizers
  • The 'Dispose' pattern
  • IDisposable
  • The Using statement

Appendix Module: Working with Files (5 topics)

  • System.IO namespace
  • File & Directory classes
  • Streams
  • Readers & Writers
  • Compressing and Decompressing Data

Appendix Module: Working with Data (5 topics)

  • ADO.NET architecture
  • Connections & Commands
  • Using DataReaders
  • Using DataSets
  • Managed Providers

Appendix Module: Working with Text (3 topics)

  • Class String; Class StringBuilder
  • Formatting Strings
  • Regular Expressions

Getting Started with LINQ (4 topics)

  • The various C#3 language features that act as LINQ enablers
  • The Func Delegate family including Func
  • The LINQ API and query pattern
  • LINQ to Objects


Delegates must understand the fundamentals of programming and should have some existing knowledge of object oriented programming concepts. This is a course for developers. Good keyboard skills are an absolute necessity.

Course PDF