C# Language Internals - Part 2

The second part of the C# Language Internals course continues our journey of the inner workings of the C# programming language and the CLR.
Course info
Rating
(207)
Level
Advanced
Updated
Jun 9, 2014
Duration
4h 39m
Table of contents
Investigating Iterators
Asynchronous Methods
Expression Trees
Dynamic Programming in C#
Hidden Gems in System.Runtime.CompilerServices
COM Interop, No PIA, and WinRT
Not-So Secret Language Features
Description
Course info
Rating
(207)
Level
Advanced
Updated
Jun 9, 2014
Duration
4h 39m
Description

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.

About the author
About the author

Bart is a software engineer building massive scale data processing systems at Microsoft. His areas of expertise include programming languages, runtimes, reactive programming, and databases. Prior to joining Microsoft, Bart was an MVP for C#. Bart is a popular speaker at various conferences and the author of a few C# books.

More from the author
Introduction to the .NET Compiler Platform
Intermediate
4h 49m
23 Oct 2014
C# Language Internals - Part 1
Advanced
5h 10m
29 Jan 2014
Section Introduction Transcripts
Section Introduction Transcripts

Hidden Gems in System.Runtime.CompilerServices
Hi everyone and welcome back to the C# language internals course here at Pluralsight. I'm Bart DeSmet and this module will talk about the System. Runtime. CompilerServices namespace. So what's in a name? Well obviously it's all about a collection of types that are used by compilers. Whether it's the C# compiler, the VB compiler, F#, C++, they all rely on some of the types that live in this namespace. Now we've already seen plenty of examples of types that live in this namespace. For example, when we talked about dynamic typing in this course, we saw the call site and call site of T types as well as the dynamic attribute that used to disambiguate between object and dynamic. Secondly, we talked about extension methods on various occasions when talking about language features like link. The attribute that distinguishes an ordinary static method from one that has to be interpreted as an extension method also lives in this namespace. All of the stuff around C# 5. 0 dynamic, whether it's the awaiter types or the interfaces that need to be ipmlented by awaitable types, or even the interface used for the state machine created by the compiler, all of these all types also live in this namespace. Caller info attributes is one of those features also introduced in C# 5. 0 that we will take a look at later in this module, but all of the attributes that you will need to use this feature can also be found in this namespace. And finally, friend assemblies, which were introduced in. NET 2. 0 for type forwarding and also the InternalsVisibleToAttribute, which is often used for testing and providing visibility to internal members from test assemblies, does also live in system link or System. Runtime. CompilerServices.