C# Development Fundamentals


C# Development Fundamentals

Authors: Paolo Perrotta, Alex Wolf, Gill Cleeren, Thomas Claudius Huber, Roland Guijt, Simon Robinson, Elton Stoneman, Paul D. Sheriff, Jason Roberts, Deborah Kurata

C# is the most commonly used language for leveraging the .NET Framework. As such, learning C# is a springboard to creating enterprise systems, desktop applications, websites and... Read more

What you will learn

  • C# syntax
  • Object oriented paradigm
  • Arrays, lists, dictionaries
  • Interfaces
  • Generics
  • Events, delegates, and lambdas
  • LINQ
  • Asynchronous programming


No prior C# knowledge or experience is needed. Some understanding of common programming concepts, such as variables and looping, will be helpful.

Introduction to C#

Do you want to become productive with C#? This beginner area is the perfect place to start. These C# tutorials are designed to give you everything you need to become a productive C# developer. By the end of this section, you’ll have a firm understanding of the C# language and valuable insights on how things work under the hood.

Coming Soon

C#: The Big Picture

Coming Soon

by Mike Woodring

C#: Getting Started

by Paolo Perrotta

May 11, 2021 / 1h 37m

1h 37m

Start Course

C# is one of the most popular programming languages, but it’s also intimidating. There is so much going on, even in a simple program! The first step into C# can feel like climbing a brick wall.

In this course, C#: Getting Started, you’ll set up a development environment and run a tiny “Hello, World!” program. Granted, that program will have many moving parts. Fear not: you'll explore those parts one by one, until you have a clear idea of everything that is going on.

First, with the help of a pre-baked piece of code, you’ll turn the simplistic program into a usable command-line utility. Next, you’ll find and fix a bug together in Microsoft Visual Studio. Finally, you’ll look into a couple of more advanced C# features: structs and properties.

By the end of this course, C# won’t look so intimidating anymore. That brick wall will be behind you, and you’ll be on your path to become a C# developer.

Table of contents
  1. Course Overview
  2. Getting Ready to Code
  3. Exploring C#'s Building Blocks
  4. Assembling a C# Program
  5. Hunting for Bugs
  6. Wrapping It Up

Controlling Program Flow in C#

by Alex Wolf

Apr 29, 2021 / 2h 32s

2h 32s

Start Course

Nearly every modern application requires structured logic to make decisions and manage repetitive tasks. In this course, Controlling Program Flow in C#, you’ll learn to use different types of C# statements to control the execution flow of your apps. First, you’ll explore how statements form the building blocks of C# code, and use simple statements and expressions to calculate values and handle logical comparisons. Next, you’ll discover how to use conditional selection statements to create branching paths of logic in your apps. Finally, you’ll learn how to manage repetitive tasks and work with sets of data using loops and iteration statements. When you’re finished with this course, you’ll have the skills and knowledge of C# statements needed to control the logic and flow of meaningful applications.

Table of contents
  1. Course Overview
  2. Working with C# Statements
  3. Branching Program Flow with Selection Statements
  4. Looping through Tasks with Iteration Statements
  5. Exploring Additional Program Flow and Statement Features

Introduction to the C# Type System

by Gill Cleeren

May 3, 2021 / 5h 17m

5h 17m

Start Course

Since C# is a strongly-typed language, everything you work with has to have a type defined. It's vital to know how to create your own custom types like classes, interfaces, enums, and structs. In this course, Introduction to the C# Type System, you’ll learn about the type system in C#. First, you’ll explore the built-in data types, including int, string, and DateTime. Next, you’ll understand the difference between value types and reference types and you’ll see how to create your own types, be that classes, enums, interfaces, or structs. Finally, you’ll learn about the different aspects offered by C# to create classes including inheritance. When you have finished this course, you’ll understand the different value types and reference types in C# needed to create any .NET application using C#.

Table of contents
  1. Course Overview
  2. Course Introduction
  3. Using Built-in C# Data Types
  4. Creating and Using Strings
  5. Working with Methods
  6. Understanding Value Types and Reference Types
  7. Creating Your First Class and Objects
  8. Doing More with Custom Types
  9. Applying Inheritance to C# Types
  10. Using Interfaces

Coming Soon

C# Interfaces

Coming Soon

by Jeremy Clark

C# Generics

by Thomas Claudius Huber

Apr 13, 2021 / 3h 15m

3h 15m

Start Course

Generics are a powerful feature of the C# language, they allow you to write type-safe, reusable, and performant code. In this course, C# Generics, you’ll learn to build and use generic types in your .NET applications. First, you’ll explore the need for generics in C#. Next, you’ll discover how to build and use generic classes, interfaces, methods, and delegates. Finally, you’ll learn how generics behave in special cases, like with static members and mathematical operators. When you’re finished with this course, you’ll have the skills and knowledge of C# Generics needed to build and use your own generic types in your .NET applications.

Table of contents
  1. Course Overview
  2. Understanding the Need for Generics
  3. Implementing Generic Classes
  4. Working with Generic Interfaces
  5. Creating Generic Methods and Delegates
  6. Knowing the Special Cases with Generics

C# Language Features

Once you have a strong foundation with C#, you can now start fine tuning your skills to create code that is more maintainable, extensible, and object-oriented. The C# courses in this section will provide everything you need to know to take advantage of the rich feature set C# provides.

Working with C# Records

by Roland Guijt

Apr 16, 2021 / 1h 6m

1h 6m

Start Course

As a developer you want to write quality code with as few bugs as possible. In this course, Working with C# Records, you’ll learn to make your code bug resistant using immutability and Records. First, you’ll explore the concept of immutability. What it is and why it improves software quality. Next, you’ll discover Records, which will make working with immutability in C# a breeze. Finally, you’ll learn the features of Records, which will make working with them a pleasure. When you’re finished with this course, you’ll have the skills and knowledge to apply immutability and records to your software needed to mitigate those nasty bugs.

Table of contents
  1. Course Overview
  2. The Case for Immutability
  3. Records in Action
  4. Working with Synthesized Methods

Working with Arrays and Collections in C#

by Simon Robinson

Apr 20, 2021 / 2h 12m

2h 12m

Start Course

Real-world apps almost always require manipulating sets of data, and in C# apps, that data is normally held in collections. In this course, Working with Arrays and Collections in C#, you’ll learn how to use collections to access your data. First, you’ll discover how to look up and enumerate data in an array – the simplest of the collections. Next, you’ll learn how to add and remove data using a list, and how dictionaries can aid efficient look up by using a key. Then, you’ll delve into easily combining sets of data using the HashSet collection. Finally, you'll explore how to process data using stacks and queues, and make modifications more efficient with linked lists. By the end of the course, you’ll have a better understanding of the skills needed to work with your data in C# using collections.

Table of contents
  1. Course Overview
  2. Storing Data in an Array
  3. Finding Data in an Array
  4. Adding and Removing Data with List<T>
  5. Dictionaries
  6. Sets
  7. Complex Data: Multidimensional and Jagged Arrays
  8. Stacks and Queues
  9. Adding Data Efficiently with Linked Lists

C# Extension Methods

by Elton Stoneman

Oct 1, 2019 / 1h 26m

1h 26m

Start Course

Extension methods are a key feature of C# - they boost productivity, increase the readability of your code, and make it easy to implement standards across your projects. In this course, C# Extension Methods, you will learn all you need to know about extension methods in .NET Framework and .NET Core. First, you will learn the basics of extension methods: how to use them, how to write them, and how the tooling in Visual Studio and VS Code helps you to work with them. Then, you will discover the danger areas and the best practices for building your own extension methods. Finally, you will explore how to package and publish your own extension method library. By the end of this course, you will have a complete understanding of how to get value from this powerful feature.

Table of contents
  1. Course Overview
  2. Getting Started with Extension Methods
  3. Best Practices for Using Extension Methods
  4. Building Your Own Extension Method Library

C# Language-Integrated Query (LINQ)

by Paul D. Sheriff

Mar 17, 2021 / 2h 32m

2h 32m

Start Course

LINQ can filter and extract data from collections much more efficiently and with less code. In this course, C# Language-Integrated Query (LINQ), you’ll learn over 60 LINQ queries using C#. First, you’ll explore why you should use LINQ, how to select, order, filter and extract data using LINQ queries. Next, you’ll discover how to use LINQ queries to work with multiple collections, group and aggregate data. Finally, you’ll learn what goes on under the hood with LINQ queries by understanding deferred execution. When you’re finished with this course, you’ll have the skills and knowledge of LINQ needed to query data efficiently and with less code from any collection of data.

Table of contents
  1. Course Overview
  2. Why You Should Use LINQ
  3. Using LINQ Select and Order Operations
  4. Extract Data Using Filtering and Element Operations
  5. Extract Distinct Values, Assign Values and Partition Collections
  6. Identify What Kind of Data Is Contained in Collections
  7. Compare and Union Two Collections
  8. Joining Two Collections Together
  9. Creating Groups of Data Using GroupBy
  10. Aggregating Data in Collections
  11. Understanding Deferred Execution in LINQ

IDisposable Best Practices for C# Developers

by Elton Stoneman

May 13, 2021 / 2h 16m

2h 16m

Start Course

IDisposable is the only part of the platform where .NET asks for your help. If you don't use IDisposable correctly, the .NET Garbage Collector can't manage memory properly, so your app won't run efficiently, it may have strange errors, and it will eventually crash.

In this course, IDisposable Best Practices for C# Developers, you'll learn to manage object lifetimes and keep your apps running lean. First, you'll see what goes wrong if you don't dispose of objects, and how that can bring your apps down. Then, you'll explore the Garbage Collector to understand how .NET cleans up unused objects. Finally, you'll discover how to implement IDisposable throughout a distributed .NET application. When you’re finished with this course, you’ll have the skills and knowledge of managed and unmanaged memory to keep your .NET apps performing under any load.

Table of contents
  1. Course Overview
  2. Introducing IDisposable
  3. What Happens When the Garbage Collector Runs?
  4. What Happens if You Don't Dispose?
  5. Just the Best Practices

Applied C#

The courses in this section will provide valuable insight into the finer points of the C# language. This includes a deep dive into creating code with interfaces, the use of extension methods and lambda functions. Finally you will wrap up by gaining an understanding of C# concurrent collections and various tips to be an effective C# developer.

Exception Handling in C#

by Jason Roberts

Mar 22, 2021 / 1h 44m

1h 44m

Start Course

Missing or incorrectly implemented error handling code can lead to data corruption, unnecessary crashes, annoyed end-users, out-of-hours support calls, and hard to maintain code. In this course, Exception Handling in C#, you’ll gain the ability to correctly handle runtime errors in your C# applications. First, you’ll explore what exceptions are and why we use them. Next, you’ll discover how to respond to errors that occur in your applications at runtime. Finally, you’ll learn how to throw exceptions in your own code and even how to define your own custom exception classes. When you’re finished with this course, you’ll have the skills and knowledge of C# exception handling needed to handle runtime errors in your C# applications.

Table of contents
  1. Course Overview
  2. Understanding the Importance of Error Handling
  3. Understanding the Exception Class Hierarchy
  4. Getting Started with Exceptions
  5. Catching, Throwing, and Rethrowing Exceptions
  6. Creating and Using Custom Exceptions
  7. Writing Automated Tests for Exception Throwing Code

Working with Nulls in C#

by Jason Roberts

Aug 19, 2019 / 2h 8m

2h 8m

Start Course

Unexpected null values and NullReferenceExceptions can be a constant source of bugs resulting in wasted time and out of hours support callouts. In this course, Working with Nulls in C#, you'll learn about the different ways that null values pop up in C# code and how to deal with them. First, you'll dive into the fundamentals of why you get null values and the difference between value and reference types. Next, you'll explore how you can use the various C# operators to check for and manipulate nulls. Then, you'll see how to think about nulls at a higher abstraction level in your object-oriented code. Finally, you'll discover how the features introduced in C# 8 can help even more by allowed non-nullable reference types. By the end of this course, you'll understand the different types of objects in C#, how to correctly create nullable value types, how to use C# operators to work with nulls in fewer lines of code, how to implement the Null Object pattern, and how to use nulls in C# 8.

Table of contents
  1. Course Overview
  2. Working with Nullable Value Types and Strings
  3. Accessing and Checking for Null Values
  4. Eliminating Null Reference Exceptions
  5. Understanding Non-nullable Reference Types in C# 8

Implementing C# Unit Testing Using Visual Studio 2019 and .NET 5

by Paul D. Sheriff

Feb 16, 2021 / 2h 12m

2h 12m

Start Course

Every developer knows they should be creating unit tests to improve the quality of their applications. In this course, Basics of Unit Testing for C# Developers, you'll learn how to create unit tests by using Visual Studio.

First, you'll see how easy it is to get started with creating unit tests.
Next, you'll explore how to simplify the unit test process by creating data-driven tests.
Finally, you'll cover how to automate your unit tests by scheduling them to run via the command line utility VSTest.Console.

By the end of this course, you'll have the required skills needed to go on and learn more advanced topics in unit testing.

Table of contents
  1. Course Overview
  2. Why You Need Unit Testing
  3. Your First Unit Tests
  4. Avoid Hard-Coding in Unit Tests
  5. Initialization and Cleanup
  6. Attributes Help You Organize Your Unit Tests
  7. Assert Classes Save a Lot of Time
  8. Consolidate Tests by Making Them Data-Driven
  9. Automating Unit Tests with VS.Test.Console

Defensive Coding in C#

by Deborah Kurata

Jan 2, 2020 / 2h 14m

2h 14m

Start Course

Great applications perform required operations as expected, help users enter correct data, handle system and application exceptions, and make it easy for future developers to modify and maintain the code. Defensive coding focuses on improving code comprehension through clean code, improving code quality with unit tests, and improving code predictability by building clear methods and preparing for the unexpected. In this course, Defensive Coding in C#, you will gain the ability to strengthen your application’s defenses against the perils awaiting it in the real world. First, you will learn how to improve your code comprehension by following techniques such as the Single Responsibility principle. Next, you will discover how to improve your code quality through unit tests. Finally, you will explore how to improve your code predictability by validating method arguments, handling nulls appropriately, returning predictable results, and managing exceptions. When you are finished with this course, you will have the skills and knowledge needed to strengthen your code’s defenses.

Table of contents
  1. Course Overview
  2. Why Defensive Coding Matters
  3. Strengthening Our Code’s Defenses
  4. Validating Method Arguments
  5. Handling Nulls
  6. Returning Predictable Results
  7. Managing Exceptions
  8. Final Words

Object-Oriented Programming Fundamentals in C#

by Deborah Kurata

Mar 11, 2019 / 3h 26m

3h 26m

Start Course

This course takes you through the principles and practices of object-oriented programming (OOP). The course provides you with the firm foundation in OOP that you need to progress to intermediate-level C# courses. It begins by showing you how to turn a set of words into a set of well-defined and related classes. Through demonstrations, it teaches you key object-oriented concepts such as abstraction, encapsulation, inheritance, polymorphism, and interfaces.

Table of contents
  1. Course Overview
  2. Introduction
  3. Identifying Classes from Requirements
  4. Building Entity Classes
  5. Building Entity Classes - Methods
  6. Separation of Responsibilities
  7. Establishing Relationships
  8. Leveraging Reuse through Inheritance
  9. Building Reusable Components
  10. Understanding Interfaces
  11. Final Words and Next Steps
Offer Code *
Email * First name * Last name *
Country *

* Required field

Opt in for the latest promotions and events. You may unsubscribe at any time. Privacy Policy

By providing my phone number to Pluralsight and toggling this feature on, I agree and acknowledge that Pluralsight may use that number to contact me for marketing purposes, including using autodialed or pre-recorded calls and text messages. I understand that consent is not required as a condition of purchase from Pluralsight.

By activating this benefit, you agree to abide by Pluralsight's terms of use and privacy policy.

I agree, activate benefit