.NET (C#) For Experienced Developers

Build a solid foundation in the C# programming language and .NET platform.

Overview

This course introduces programmers familiar with Java or C++ to C# and the fundamentals of building and deploying applications on the .NET platform with Visual Studio 2015.

Outline

Fundamental Concepts of .NET

  • Compiling to Intermediate Language (IL)
  • The Common Language Runtime (CLR)
  • Comparing the CLR and the Java VM
  • The Common Type System (CTS)
  • Assemblies and Application Domains
  • Running the C# compiler manually
  • Examining assemblies using ILDASM
  • Locating and loading assemblies
  • Deploying assemblies to the GAC

Creating and Compiling Applications

  • Installing and running Visual Studio (VS)
  • Creating new solutions and projects in VS
  • Building console and GUI based applications
  • Choosing between Winforms, WPF and UWP
  • Building and referencing class libraries
  • Building ASP based Web Applications

Procedural Coding and Built In Objects

  • Basic types and their CTS mappings
  • Implicit types using var
  • Understanding the object class
  • Using Strings and StringBuilders
  • String interpolation
  • Converting between basic types
  • Boxing and unboxing basic types
  • Constructs for iteration and selection
  • Working with the three types of array
  • Documenting C# code using XML

Object Oriented Development Part One

  • Class declarations in C#
  • Understanding partial classes
  • Organizing classes into namespaces
  • Access modifiers and their meaning
  • Static, readonly, constant and volatile modifiers
  • Adding constructors to classes
  • Using other constructors via this and base
  • Object initialization in detail
  • Using properties instead of accessor methods
  • Creating auto-properties and using initialisers
  • Expression bodied properties and methods
  • Allowing clients to use array notation by implementing an indexer method
  • Destructor methods and finalization
  • Comparing GC in Java and .NET
  • Declaring methods and parameters
  • Passing parameters by reference and for output
  • Using variable number parameters

Object Oriented Development Part Two

  • Declaring derived classes
  • Polymorphism with virtual and override
  • Opting out of polymorphism using new
  • Safe downcasting using is and as
  • Abstract base classes and Interfaces
  • The null conditional operator
  • Primary constructors
  • Releasing resources via IDisposable
  • Differentiating between Java Inner Classes and C# Nested Classes
  • Throwing and catching exceptions
  • Comparing the exception management philosophies of Java and C#

Event Handling, Delegates and Lambdas

  • Using delegates to hold function addresses
  • Working with anonymous delegates and lambdas
  • Functional programming techniques using lambdas
  • Adding events to your own classes

Generic Programming in C#

  • Introduction to Generic Programming
  • How generics works within the CLR
  • Using the generic collection classes
  • Declaring your own generic types
  • Generic type parameter inference
  • Applying constraints to type parameters
  • Examining generic types via reflection

Language Integrated Query (LINQ)

  • The basic syntax of a LINQ query
  • Data sources that support LINQ queries
  • The IEnumable and IQueryable interfaces
  • Running queries against collections of objects
  • Running queries against XML node trees
  • Running queries against a SQL Server database
  • Combining LINQ with the Entity Framework

Advanced Language Features

  • How to overload operators
  • Using structs to create local objects
  • Pointers and unsafe code

Concurrent Development in .NET

  • The standard .NET threading API’s
  • Running LINQ queries concurrently via PLINQ
  • The Task Parallel Library
  • The async/await Pattern

Requirements

Delegates should have a minimum of two years Java or C++ programming experience.

Sign up and stay in the loop

Be the first to know about upcoming workshops, courses, talks and events

Learn more

Very good overview of C# presented by a teacher who was fluent in all things .NET and had a fantastic grasp of modern technologies.