Overview of the Microsoft .NET Platform
.NET was designed with some specific goals in mind. We'll explore what these goals are and how the .NET Framework helps us in attaining those goals.
- What is a .NET Application at design-time and at run-time
- The Common Language Runtime and .NET Class Libraries
- The Intermediate Language
- .NET Profiles
.NET Skeleton Application
When you create a program in .NET it needs to follow a couple of rules. We'll look at the structure of an application and which parts are necessary during runtime.
- The Visual Studio solution and project
- What are namespaces and libraries
Classes and Objects
One of the most basic parts of OO programming is designing a blueprint (called class) and during runtime creating an object out of that. In this module we will talk about the real fundamentals of .NET programming. We create variables to store numbers, text and complex objects and try to use operators on them. We'll explore the ways in which you create a class and add state and behavior to objects.
- What is a class?
- Fields, Methods and Properties
Each object you instantiate from a class needs to be constructed. We'll explore how .NET solves this problem.
- Instance Constructors
- Constructor initializers
- Overloading constructors
Types in .NET
Whether you're trying to store numbers, text or objects, you need to put them into variables. These variables will inevitably end up somewhere in memory. By knowing where in memory each type of variable gets stored, we can predict what will happen to them.
- Type categories in .NET
- Value types, Reference types and Immutable Reference types
- Custom Value types: Structure and Enumeration
- Boxing and Unboxing
- Arguments of functions. Pass by value, by reference; Passing output
Shared Members and Modules
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 Shared members and modules.
- Shared Members
- Shared constructors
A very important aspect of OO programming is being able to inherit functionality from a basic concept. We'll explore how we can use Inheritance to extend a class and add functionality to it.
- General principle of inheritance
- Accessibility levels, public, private, protected
On top of Inheritance comes this marvel in OO programming. It allows us to add different functionality based on a generic idea. When using a database connection you just want to know that you can open, close and execute a query on it. However when you want to really implement it, you need to decide wheter it should open a connection to Sql Server, Oracle or some other database system. With polymorphism this is an easy feat to accomplish.
- Inheritance & polymorphism
- Overriding methods
- Using the base class
- NotInheritable classes, methods and properties
- The Object class
MustInherit classes and Interfaces
- MustInherit classes
- Defining interfaces
- Implementing interfaces
- Interface examples in .NET
- Arrays, Lists, and Maps in .NET
- Indexer properties
- The For Each, For and While loops
Since .NET 2.0 there is a concept added to the framework called Generics. It allows us to create non-finished types, to be filled in when we use it. In this way we can create a List of T, where the "T" can be filled in with whatever we want.
- How to use Generics
- Creating your own Generics
- Generic constraints
Whenever something unexpected happens (like a network cable being unplugged from a machine), we want our programs to handle this behavior in a user-friendly way. With Exceptions we can react fittingly when these problems occur.
- The exception-mechanism in .NET
- The try-catch-finally keywords
- Creating custom Exceptions
Delegates and Events
One of the most difficult aspects of .NET programming is to be able to store functions in a variable. That is exactly what delegates allow us to do. This concept is used in lots of locations, especially when using asynchronous programming. Events are based on delegates, so whenever something interesting happens in a UI (eg. mouse click) and we want to react on it, we need delegates to handle it correctly.
- Creating Delegates
- Using Delegates
- Multicast Delegates
- Creating Events
- Using Events in a UI
Linq Language Features
.NET 3.5 introduced a couple of features that make the life of developers a hell of a lot easier. We'll explore them in this chapter.
- Type Inference
- Extension methods in .NET
- Anonymous types
- Lambda expressions
LINQ allows to write queries that is very familiar to SQL queries. This makes certain operations like filtering and sorting data very easy. This concept is used in lots of locations, whether it is to connect to SQL databases of reading data from Active Directory. We'll connect with a database by using Entity Framework.
- Enumerable class
- Func delegates
- Entity Framework
- Query operations from, where, order, group and select