Confidently follow learning paths that help you develop the right skills in the right order to achieve your goals.
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 mobile applications. The goal of this learning path is to take you from having little to no experience with C# to understanding how to leverage the language's advanced features and how it works on the CLR.Get Started
.Net developer, web developer, software engineer, ASP.Net, Visual Studio, WPF
No prior C# knowledge or experience is needed. Some understanding of common programming concepts, such as variables and looping, will be helpful.
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# syntax, object-oriented programming and valuable insights on how things work under the hood.
In this course, we'll see how to build classes, program with objects, and work with interfaces using the C# language.
In this course, you'll learn how to use equality and comparisons correctly in your C# code: both how they work out of the box, and how to implement equality and comparisons for your own types. The course also covers working with inheritance, string comparisons, writing custom comparers and equality comparers, hash codes, and structural comparisons.
This course aims to empower you to take advantage of the surprisingly rich set of collections that are available in C#. You'll learn how to use the various collection types to store data as arrays, lists, dictionaries, linked lists, or sets, as well as how to customize collection behavior in C#. You'll also learn how many of these types work under the hood and the implications for performance. This course also covers enumerators and the collection interfaces.
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 easily testable. The C# courses in this section will provide everything you need to know to become a C# pro.
Do you want code that's maintainable, extensible, and easily testable? If so, then C# interfaces are here to help. In this course, we’ll take a look at how we can use interfaces effectively in our code. We'll start at the beginning ("What are interfaces?") and then explore why we want to use them. Along the way we'll create and implement own interfaces, see how to explicitly implement interfaces, and take a look at dynamic loading, unit testing, and dependency injection. All of which is made possible with interfaces.
When building applications we often deal with groups of things: a user's preferences, a customer's orders, or a product's color choices. To implement these groups of things in C#, we use collections. And to get the most from collections, we need to leverage generics. This course covers how, when, why, and best practices for using C# collections and generics, including arrays, generic interfaces, LINQ, delegates, and Lambda expressions.
Events, delegates and lambdas play an important role in the .NET framework but can be difficult to understand as developers first get started with the C# language. If you’re interested in gaining a more thorough understanding of how these C# technologies work then you’re in the right place! This course focuses solely on events, delegates and lambdas and provides insight into how they can be used in your .NET applications using the C# language.
Extension methods are a powerful C# feature which are underused and often misunderstood. In this course you’ll learn all about writing, using and organizing extension methods, how the CLR implements them and what scenarios they enable. We’ll build a library of key extension methods you can use in your own projects to make your code cleaner, safer and more maintainable.
This course covers practical uses of Language Integrated Query (LINQ). With LINQ, you can search, sort, create, compare and analyze your data. And you can use LINQ to manipulate and shape your data for display in a user interface. With its common syntax, strong typing, Intellisense support, and transformational features, like the internet, you'll wonder how you ever coded without it. Enjoy!
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.
You will learn how to write clean, maintainable, and testable code when faced with constantly changing requirements, legacy issues, intensive time pressures, and a rapidly evolving environment. You will also learn how to keep that code great after maintenance activities, multiple developers, and the ravages of time.
The .NET framework is huge, and it’s sometimes hard to know what you don’t know. Our advanced section of courses in this path have you covered. Whether you’re still learning C# or you’re a seasoned professional, you’ll find valuable pieces of information here that will keep you learning. Our “tips and traps” series will give you useful knowledge to make you more productive, and our language internals series will make you a well-informed wizard of debugging and performance.
In this course, we will cover the way to get started with asynchronous programming in .NET. You will learn how to apply these patterns in new and existing applications and you will see how to avoid the common mistakes.
Learn how to use concurrent collections in multithreaded code! This course is a comprehensive introduction to the concurrent collections. It shows you how to use each of the main collection types: ConcurrentDictionary, ConcurrentQueue, ConcurrentBag, and ConcurrentStack. You'll learn the correct techniques for using these collections to avoid bugs such as race conditions, and also how to use BlockingCollection with the concurrent collections correctly in producer-consumer scenarios. The course rounds off with a look at some concurrent collection best practices.
Whether you're still learning C# or you already have some experience, it's sometimes hard to know what you don't know. This course is designed to short-circuit your C# learning and provides a whole host of useful information about the sometimes under-used or unknown features of both the C# language and the .Net framework. It's suitable for those who are brand new to C# as well as experienced developers looking to "round off" their C# skills and "fill in the gaps".
Whether you're still learning C# or you already have some experience, it's sometimes hard to know what you don't know. This is the follow-up course to C# Tips and Traps and is designed to further short-circuit your C# learning and provides a whole host of useful information about the sometimes under-used or unknown features of both the C# language and the .Net framework. It's suitable for those who are brand new to C# as well as experienced developers looking to "round off" their C# skills and "fill in the gaps".
This course takes .NET developers behind the scenes of C# language features to gain a deeper understanding of the language, the Intermediate Language (IL) it compiles into, and the Common Language Runtime (CLR) it runs on. By studying language internals, you can make well-informed design choices, solve hard debugging puzzles quicker, and understand the performance ramifications of using various language features. This is the first part of a two-part course.
In the second part of this course, we take .NET developers behind the scenes of advanced C# language features to get a deeper insight into the language, the Intermediate Language (IL) it compiles into, and the Common Language Runtime (CLR) it runs on. By studying language internals, you can make better design choices involving advanced language features, solve hard debugging puzzles quicker, and understand the performance ramifications of these language features. This is the second part of a two-part course.