• Post category:StudyBullet-11
  • Reading time:24 mins read


Learn How To Code in C#. Dive into The Language In and Outs and Best Practices. For Windows, Mac and Linux.

What you will learn

Use the .NET CLI to create, build and run C# based applications

Classify and create C# built-in types, custom types and data structures

Implement the error handling logic of C# based applications

Learn delegates, lambdas and event based programming

Explain and leverage LINQ and LINQ operators

Understand immutability and equality in C#

Use Visual Studio Code to edit C# code, build and run C# console applications

Description

This course is the perfect course to dive into the C# language concepts

C# is one of the most popular programming languages. It is a powerful cross-platform language.

After learning and mastering the language, you will be able to go further and learn ASP Net Core to develop web apps, or you can work as a mobile or Desktop developer after learning .NET MAUI. In this course, we will walk through the language internals and you will be able to proceed to the next step. You will learn C# basics and more on Visual Studio Code. The most important aspects of the language are included in this course. This is the course for you to become a productive and skilled C# developer.

A course for all platforms

This course is made for Windows, Mac and Linux developers. Since the first versions of .NET Core, C# became a real cross platform programming language. We will work on Visual Studio Code, one of the most popular code editors.

This course is a deep dive in the C# language. We will focus on the language and its best practices.

In the first sections, we will have an overview of the fundamentals of the language, including:

  • C# basics
  • The flow of execution of programs
  • The language structure and syntax
  • Data types

Then we will learn more intermediate concepts like:


Get Instant Notification of New Courses on our Telegram channel.


  • Classes, structures and enumerations
  • Members: fields, properties and methods
  • Type conversions
  • Inheritance and interfaces
  • Generics
  • Nullable value types

That will lead us to the most advanced topics:

  • Collections
  • Error handling
  • Delegates
  • Immutability and equality

Coding along the way

Every section of this course comes with slides that contain all the key concepts, practical examples, quizzes and some challenges. You can follow along and learn C# by coding

Who is this course for ?

This course is suited C# newbies, students or even developers who want to learn the language or consolidate their knowledge about the language

By the end of the course you will have all the knowledge and practice to be a productive C# developer in your studies or in your professional environment.

This course is about C# 9. I regularly update the content of the course, new sections about C# 10 will be released.

So join me and start off your C# learning journey !

English
language

Content

Introduction

Course introduction
What you will learn in this course
Who is this course for ?
Prerequisites
Course overview

Set-up your environment

Introduction
Install the SDK
The .NET CLI
Visual Studio Code installation
Visual Studio Code : first look
Visual Studio Code extensions
Visual Studio Code customization

C# fundamentals

Introduction
What is C# ?
Compilation and execution of C# code
Demo : Compile-time and run-time error
C# keywords
Demo : C# keywords
Demo : Create a console application
What are statements ?
Demo : statements
C# code blocks
Demo : blocks
Variables
Demo : variables
Implicitly typed variables
Demo : implicitly typed variables
C# operators
Demo : operators
Expressions
Demo : Intellisense
Demo : Classes and members
Section summary
C# fundamentals

Program flow

Introduction
C# program execution flow
Demo : execution flow
The If statement
Demo : If statement
The switch statement
Demo : switch statement
The do while statement
Demo : Do while
The while statement
Demo : While
The for statement
Demo : for
Jump statements
Demo : jump statements
Debug C# code
Section summary
Program flow

Reference and value types

Introduction
C# a strongly typed language
Types overview
Value types
Demo : value types
What is the stack ?
Reference types
Demo : reference types
What is the heap ?
Built-in types
Custom types
Section summary
Reference and value types

Built-in types and namespaces

Introduction
The boolean type
Demo : booleans
Integer types
Demo : integers
Floating point types
Demo : floating point types
Binary floating point types
Demo : binary floating point types
The decimal floating point type
Demo : decimal
The char type
Demo : The char type
The string type
Demo : string
The default operator and literal
Namespaces
Demo : namespaces
Section summary
Built-in types and namespaces

Classes, structures and enumerations

Introduction
Classes
Demo : classes
Constants, fields and properties
Demo : constants, fields and properties
Structures
Demo : structures
Enumerations
Demo : enumerations
Assemblies
Add references to a project
Access modifiers
Demo : access modifiers
Comments
Demo : comments
Section summary
Classes, structures and enumerations

Methods, constructors and the static keyword

Introduction
Methods
Demo : methods
Method overloading
Demo : method overloading
Optional parameters and named arguments
Demo : optional parameters and named arguments
Pass a value type parameter to a method
Demo : Pass a value type parameter to a method
Pass a reference type parameter to a method
Demo : Pass a reference type parameter to a method
Constructors
Demo : constructors
The static keyword
Demo : static classes and members
Demo : The this keyword
Challenge presentation : Launch a rocket
Challenge solution : Launch a rocket
Section summary
Methods, constructors and the static keyword

Type conversion and type testing

Introduction
Boxing/unboxing
Type conversion, implicit conversions
Demo : implicit conversions
Type conversion, explicit conversions
Demo : explicit conversions
Convert with helper methods
Demo : Convert with helper methods
Anonymous types
Demo : Anonymous types
Test types with the GetType method
Demo : GetType
Test types with the typeof operator
Demo : typeof
Test types with the is operator
Demo : is
Section summary
Type conversion and type testing

Inheritance

Introduction
What is inheritance ?
Demo : Inheritance
Virtual and override
Demo : Virtual and override
The abstract keyword
Demo : abstract classes and methods
Sealed classes and members
Demo : Sealed classes and members
Section summary
Inheritance

Interfaces

Introduction
What is an interface ?
Demo : create an interface
Interface implementation
Demo : Interface implementation
Demo : implement IComparable
Explicit implementation
Demo : Explicit implementation
Challenge presentation : logging with abstractions
Challenge solution : logging with abstractions
Interfaces in software development
Demo : Interfaces in software development
Section summary
Interfaces

Generics

Introduction
Generic classes
Demo : generic classes
Generic constraints
Demo : generic constraints
Generic methods
Demo : generic methods
Generic interfaces
Demo : generic interfaces
Challenge presentation : Observer/observable pattern
Challenge solution without generics : Observer/observable pattern
Challenge solution with generics : Observer/observable pattern
Section summary
Generics

Nullable value types and null checking

Introduction
Nullables
Demo : nullable value types
Null checking
Demo : null checking
Section summary
Nullable value types and null checking

Arrays and collections

Introduction
Working with collections of objects
Arrays
Demo : arrays
Challenge presentation : the ring buffer
Challenge solution : the ring buffer
Section summary
Arrays and collections

Collections, collection interfaces and yield return

Introduction
Collections and the IEnumerable interface
Demo : Collection and IEnumerable
Yield return and IEnumerable
Demo : Yield return and IEnumerable
Demo : implement the IEnumerable interface
ICollection interface
Demo : ICollection interface
Collection performance
Section summary
Collections, collection interfaces and yield return

List and dictionaries

Introduction
Lists
Demo : lists
Dictionaries
Demo : dictionaries
Dictionaries under the hood
Demo : Dictionaries and IEqualityComparer
Section summary
List and dictionaries

Other collections

Introduction
Stacks
Demo : stacks
Queues
Demo : queues
Hashsets
Demo : hashsets
LinkedList collection
Demo : LinkedList
SortedDictionary collection
Demo : SortedDictionary
Section summary
Other collections

Read-only and immutable collections

Introduction
ReadOnlyCollection
Demo : ReadOnlyCollection
ReadOnlyDictionary
Demo : ReadOnlyDictionary
Immutable collections
Demo : Immutable collections
Section summary
Read-only and immutable collections

Why error handling ?

Introduction
.NET solutions
Demo : create .NET solutions
The astronomical calculation library
Mass conversion class errors
Gravity calculation class errors
Call the library from a .NET API
Why error handling ?
Section summary
Why error handling ?

Exceptions

Introduction
Exceptions
Exception handling : try/catch/finally
Demo : handle exceptions in the console application
Demo : handle exceptions in the API
Exception handling : throw exceptions
Demo : throw exceptions in the library
Demo : throwing exceptions in the library changed the behavior of the API
Demo : exception handling depends on requirements
Demo : multiple catch
Demo : the finally statement
Section summary
Exceptions

Custom exceptions, exception wrapping and some best practices

Introduction
Custom exceptions and exception wrapping
Demo : create custom exceptions
Demo : use custom exceptions in the library
Demo : use cutom exceptions in the API
Exception handling best practices
Section summary
Custom exceptions, exception wrapping and some best practices

Delegates, events and lambdas

Introduction
Delegates
Demo : delegates
Multicast delegates
Demo : Multicast delegates
Anonymous methods
Demo : anonymous methods
Demo : create a subscription calculator
Events
Demo : events
Handling events
Demo : handling events
Action, Func and lambdas
Demo : Action, Func and lambdas
Demo : modify the subscription calculator
Demo : Expression body definitions
Section summary
Delegates, events and lambdas

LINQ Fundamentals

Introduction
What is LINQ ?
Demo : introducing the LINQ playground project
Extension methods
Demo : extension methods
Query and method syntax
Demo : Query and method syntax
Deferred execution
Demo : deferred execution
Demo : without using LINQ
Section summary
LINQ Fundamentals

LINQ operators : Part1

Introduction
Projecting and filtering
Demo : Projecting and filtering
Ordering
Demo : ordering
Distinct
Demo : distinct
Get a single element
Demo : get a single element
Paging
Demo : paging
Quantifying
Demo : quantifying
Aggregating
Demo : aggregating
Section summary
LINQ operators

LINQ operators : Part 2

Introduction
Looping and assigning
Demo : Looping and assigning
Comparing sequences
Demo : comparing sequences
Flattening sequences
Demo : flattening sequences
Grouping
Demo : grouping
Set operators
Demo : set operators
Joining
Demo : Joining
Section summary
LINQ operators : Part 2

Immutability and equality

Introduction
Demo : Immutability, the old way
Demo : init properties ( in a top level statement Program file)
Equality in C#
Demo : equality in C#
Section summary
Immutability and equality

Records

Introduction
Introduction to records
Demo : records
Demo : records equality
Record immutability and with expressions
Demo : record immutability and with expressions
Deconstructing
Demo : deconstructing
Demo : more on records
Records and inheritance
Demo : records and inheritance
Section summary
Records