Object-Oriented Programming in C#

5 days
UCSPR
5 days

Upcoming Sessions

Date:

Format:

Price:

Location:

Book now

Date:

Format:

Price:

Location:

Book now

Date:

Format:

Price:

Location:

Book now

Date:

Format:

Price:

Book now

Interested in a private company training? Request it here.

Not ready to book yet? Request an offer here.

Introduction to C#

C# is a modern, strongly-typed programming language developed by Microsoft and designed to run on the .NET platform. It is widely used for building a variety of applications, ranging from web and desktop to cloud and mobile solutions. In this introduction, you will learn what makes C# powerful, how it relates to .NET, and which tools you will use as a C# developer.

  • What is C#?
  • C# and .NET
  • Visual Studio
  • LAB - Build your first C# Hello World application

C# Fundamentals

In this chapter, you will learn the core building blocks of the C# language. These fundamentals form the basis of every C# application and are essential for writing clear, maintainable, and correct code. You will explore how C# represents data, how code is structured, and how decisions and repetition are expressed in the language.

  • Variables and Data Types
  • Introduction to Namespaces
  • Operators and Expressions
  • Control Flow (if statements and loops)
  • Arrays
  • Methods and Parameters
  • LAB - Making a Basic Console App

Development Tools

Modern C# development is supported by powerful tools that help you write, understand, and improve code more efficiently. In this chapter, you will explore the features of Visual Studio that assist you during development, from intelligent code completion and debugging to AI-assisted development.

  • IntelliSense and Code Snippets
  • Debugging C# Applications
  • AI-Assisted Development

Classes and Objects

This chapter introduces the core principles of Object-Oriented Programming (OOP) in C#. You will learn how to define classes and create objects from them at runtime. By encapsulating data and behavior, classes help structure code in a clear and maintainable way. You will also be introduced to namespaces as a means of logically grouping related classes.

  • What is a class?
  • Objects and Instantiation
  • Fields and Methods
  • Access Modifiers and Encapsulation
  • Classes and Namespaces
  • LAB - Creating your First Class

What is a C#/.NET Application

Gain a professional understanding of structuring .NET applications during the design phase with Visual Studio Solutions and Projects. Using Visual Studio, you will learn how solutions and projects are organized at design time, how code is compiled into assemblies, and how those assemblies are executed by the .NET runtime. This knowledge provides essential context for building, debugging, and scaling real-world .NET applications.

  • Solutions and Projects
  • Design-time versus Runtime
  • From Source Code to Assemblies
  • Understanding Namespaces and Assemblies
  • The Role of the .NET Runtime

Instance Constructors

Whenever you instantiate an object from a class, it needs to be constructed. This module discusses how .NET handles this.

  • Instance Constructors
  • Constructor Initializers
  • Overloading Constructors
  • LAB: Work with Constructors and Object Initializers

Static Members and Static Classes

From time to time, you need some functionality that is not part of one object, but instead part of a complete class. This allows you to use methods without creating an object, or storing data that is reachable for every object. In .NET we call this static members and classes.

  • Static Members
  • Static Constructors
  • Static Classes
  • LAB: Car Factory

Inheritance

Explore the fundamental concept of inheritance in C# and its pivotal role in the architecture of .NET itself. We will see how we can use Inheritance to extend a class and add functionality to it. To help you a bit with a practical example, we'll create an ASP.NET Core MVC application to illustrate Inheritance.

  • General Principle of Inheritance
  • Access Modifiers: Public, Private, Protected, File and Internal
  • LAB: Using Controllers in ASP.NET Core

Polymorphism

On top of Inheritance in OO Programming comes the marvel known as Polymorphism. It allows us to add a different implementation for specific types, based on a generic definition of a function. With polymorphism this is an easy feat to accomplish.

  • Inheritance & Polymorphism
  • Overriding Methods & Properties
  • Using the Base Class
  • Sealed Classes, Methods and Properties
  • The Object Class
  • Overriding the ToString, Equals and GetHashCode Method
  • LAB: Adding Polymorphism to an Employee Class

Abstraction with Abstract classes and Interfaces

Discover how abstract classes and interfaces in C# facilitate clear, flexible designs by establishing contracts for other classes to follow. This overview explores their roles in enforcing consistency and enabling polymorphic behaviors, vital for building scalable, maintainable software architectures.

  • Abstract Classes
  • Defining Interfaces
  • Implementing Interfaces
  • Interface Examples in .NET
  • LAB: Implementing IComparable and Controlling Devices

Types in .NET

Every C# program works with data, and that data is represented through types. Whether you are storing numbers, text, or objects, variables are always backed by memory. In this chapter, you will explore how different categories of types are represented in memory, how they behave when passed around in code, and how these choices impact correctness and performance.

  • Type categories in .NET
  • Value types and reference types
  • Immutable reference types
  • Custom value types: structs and enums
  • Records as immutable data models
  • Boxing and unboxing
  • Type inference
  • Passing arguments: by value, by reference, and output parameters
  • LAB - Enums, structs, pass-by-reference, and StringBuilder

Exception Handling

Whenever something unexpected happens, like the network going down, we want our programs to handle this behavior in a user-friendly way. With Exceptions we can react fittingly when these problems occur.

  • Exceptions in .NET
  • The try-catch-when-finally Keywords
  • Creating Custom Exceptions

Generics

When writing reusable code in C#, there are two primary mechanisms to consider: inheritance and generics. Inheritance enables reuse through shared base types, while generics enable reuse by defining type-safe templates with placeholder types. Generics improve type safety, eliminate the need for casting and boxing, and often lead to better runtime performance. In this chapter, you will learn how generics are used throughout .NET, starting with generic collections, and how to create your own generic types and methods. You will also explore how generic constraints allow you to place rules on acceptable type arguments.

  • Generic collections in .NET
  • Using generics
  • Creating generic classes and methods
  • Generic constraints
  • LAB: Sports Team or Movietheek

Using Delegates

One of the more challenging aspects of .NET programming is to be able to store methods in a variable. That is exactly what delegates allow us to do. This concept is used with a lot of .NET concepts, like asynchronous programming, event handling, LINQ, ...

  • What is a Delegate
  • Combining Delegates as a Multicast Delegate
  • Anonymous Methods and Lambda Expressions
  • Actions and Funcs
  • LAB: Calculator

Querying Collections with LINQ

Language Integrated Query (LINQ) provides a powerful and expressive way to query and transform collections in C#. Instead of writing complex loops, LINQ allows you to describe what data you want using a declarative syntax. These queries can be applied to in-memory collections, external data sources, and deferred execution pipelines, making LINQ a core feature of modern .NET development.

  • Extension Members
  • Query operations: from, where, orderby, group, and select
  • LAB - Creating a shop application using LINQ

Async and Await Explained

Asynchronous programming boosts application efficiency and responsiveness by enabling non-blocking operations and smoother user experiences. The async and await keywords are amongst the most commonly used language constructs in .NET. But surprisingly few people know how they actually work.

  • What is Asynchronous Programming?
  • Comparing async/await to other Asynchronous Constructs
  • Diving into the Keywords
  • Async Guidelines
  • LAB: using Async and Await

Events in .NET

Events are based on delegates, allowing your application to react to something happening, like a button click. Because of this events are fundamental in UI development frameworks like WPF, .NET MAUI and Xamarin.

  • Creating Events
  • Using Events in a UI
  • LAB: Music Store

The .NET Platform and Its Ecosystem

The .NET platform extends far beyond the C# language itself. It provides a rich ecosystem of languages, runtimes, libraries, and tools that work together to support the development of a wide range of applications. In this chapter, you will gain a broader understanding of how C# fits into the .NET ecosystem, how code is compiled and executed, and how third-party libraries are integrated into your applications using NuGet.

  • .NET languages and Interoperability (C#, F#, Visual Basic)
  • From C# to Intermediate Language (IL)
  • The .NET runtime and Execution Model
  • A Brief History of .NET
  • NuGet Package Management
  • Entity Framework Core as an example NuGet package
  • LAB: Using EF Core in a Web API

This course teaches you how to start programming with Visual Studio, C# and .NET. You will get familiar with the C# language syntax and .NET Object-Oriented Programming concepts, such as classes, objects, inheritance, polymorphism, ... In this course, you'll get a taste of the different types of applications and .NET libraries through examples in WPF, Entity Framework Core and ASP.NET Core.

Once you've finished this training, you can start your journey to learn building things like web applications, desktop or mobile apps, backends, games, IoT, bots, etc. All with C#.

This training targets developers with no or limited C# experience. A basic understanding of programming - in whatever language - is advised.

Contact Us
  • Address:
    U2U nv/sa
    Z.1. Researchpark 110
    1731 Zellik (Brussels)
    BELGIUM
  • Phone: +32 2 466 00 16
  • Email: info@u2u.be
  • Monday - Friday: 9:00 - 17:00
    Saturday - Sunday: Closed
Say Hi
© 2026 U2U All rights reserved.