This page is unmaintained. It may contain out-of-date data, broken links...
French FAQ
C# Language Specification
mono
IDEs: SharpDevelop, MonoDevelop, Project Rider
IoC Container Benchmark - Performance comparison
Libraries
- PostSharp
- AutoMapper
- FileHelpers: read/write fixed length/delimited records files
- EPPlus🚫: writes Excel files in Open Office XML format (xlsx)
- Polly: resilience strategies in a SOA architecture
personal notes
Articles and videos
- .NET Delegates: Making Asynchronous Method Calls in the .NET Environment by (August 19th, 2001) ► An introduction to delegates and how to call them asynchronously.
- A Perl Hacker's Foray into .NET by (March 19th, 2002) ► A presentation of .NET for Perl developers.
- Programmers Heaven: C# School by (December 5th, 2006) ► A book to learn C#.
- Implicit and Explicit Interface Implementations by (December 13th, 2006) ► The difference between implicit and explicit interface implementations.
- The Beauty of Closures by (2008) ► How to implement closure in C# and a comparison with Java.
-
Le mot clé yield et les itérateurs en C# by (May 28th, 2008) ► A detailed description of
yield
. - Inside .NET 4: Meet the BCL Team🗑️ by , , , , , , , , and (May 21st, 2009) ► Misceallaneous subjects: early access via CodePlex, how to support the multiple .NET languages, code contracts…
- Named and Optional Parameters in C# 4.0🚫 by (2010) ► A good presentation of the feature.
- How Do I: Use Covariance and Contravariance in VS 2010 Part I?🚫 by (2010) ► A description of the limitations of the previous C# versions.
- ↪How Do I: Use Covariance and Contravariance in VS 2010 Part II?🚫 by (2010) ► How to declare covariant and contravariant interfaces and delegates.
- C# 4.0 grammar🚫 by (2010) ► How to navigate the C# hyperlinked grammar.
- Understanding C#: Equality, IEquatable, and Equals()🚫 by (September 29th, 2010) ► The title says it all.
-
How Attributes Can Help You Debug an App — Learn how attribute-driven programming can help debug and maintain your applications much more efficiently🚫 by (October 16th, 2010) ► Using attributes to define how the debugger displays data (
DebuggerDisplayAttribute
,DebuggerBrowsableAttribute
, andDebuggerTypeProxyAttribute
) and how it steps into methods (DebuggerStepThroughAttribute
andDebuggerHiddenAttribute
). -
Introduction to Tuples in .NET Framework 4.0 by (November 1st, 2010) ► A short presentation to
Tuple
. - Introducing Code Access Security in .NET Framework↓ by (December 9th, 2010) ► A too short introduction to Code Access Security.
-
Introduction to Memory Mapped Files by (December 16th, 2010) ► A short introduction to
MemoryMappedFile
. - .NET Framework: Corrupted State Exceptions by (January 3rd, 2011) ► With .NET 4, corrupted process state exceptions are delivered anymore to managed code.
-
.NET Framework: Use Your Own Cache Wrapper to Help Performance↓ by (January 4th, 2011) ► A very simple code sample to keep cached data in the
HttpContext
’s cache and some bad advice: using a static object makes the code difficult to be unit tested. -
Demystifying C# Programming's ToString Method↓ by (January 13th, 2011) ► A little information about
ToString()
. The argument on using it to get more readable information in Visual Studio is dubious,DebuggerDisplayAttribute
should be used instead. - C# Back to Basics: Static Constructors by (January 25th, 2011) ► The title says it all.
-
Understanding the Dynamic Keyword in C# 4 by (February 2011) ► An overview of the
dynamic
keyword with many pointers toward more detailed information. - Anders Hejlsberg: Questions and Answers🗑️ by and (May 3rd, 2011) ► Miscellaneous questions to the C# creator.
- .NET Framework: Collections and Generics↓ by (June 23rd, 2011) ► This presentation of generics is much too short, unclear, and contains some errors (e.g. the boxing/unboxing definition).
- Jon Mccoy - Hacking .Net Applications: The Black Arts↓ by (June 6th, 2012) ► The guy is probably good technically, but the demos are unprepared and unclear, the speech about hacking vs. defending yourself is non-understandable…
-
The New Read-Only Collections in .NET 4.5 by (August 8th, 2012) ► A quick presentation of
IReadOnlyList
,IReadOnlyDictionary
andIReadOnlyCollection
. - Using NRefactory for analyzing C# code by (August 11th, 2012) ► A very technical introduction to NRefactory.
- Understanding .NET Using Read-Only Collections — Even if you're not working in the Microsoft .NET Framework 4.5, .NET provides you with a way to create a read-only collection or to convert an existing List into a read-only collection. by (April 24th, 2013) ► How to implement a read-only list in .NET 4.0.
- Microsoft Enterprise Library helps .NET developers be more productive — The Microsoft Enterprise Library offers reusable software components to assist with building .NET applications. Learn how to contribute to one or more of its projects. by (November 28th, 2013) ► A short presentation of Microsoft Enterprise Library.
- What's New In .NET 2015🗑️ by (November 12th, 2014) ► .NET Native, new ASP.NET and Roslyn.
-
The IsNullOrWhiteSpace trap↑ by (November 18th, 2014) ►
string.IsNullOrWhiteSpace
andstring.IsNullOrEmpty
are dangerous, they tend to make developers handle null and blank strings the same way, while, most often, this should not be the case. -
Caching Regular Data Benefits Regular Programs, Too by (August 26th, 2015) ► A very simple example of using
System.Runtime.Caching
. - Project Rider — C# IDE by (January 13th, 2016) ► JetBrains announces its own C# IDE.
- Project Rider by (January 13th, 2016) ► The Project Rider announcement during NDC London.
-
Treating warnings as errors to help prevent technical debt🚫 by (February 3rd, 2016) ► Configuring projects so warnings are treated as errors except for using a method flagged with the
Obsolete
attribute. - Technical Steering Group by (March 31st, 2016) ► Microsoft creates a C# Technical Steering Group and Red Hat, JetBrains and Unity are joining it.
- Constructor Injection with the Unity Container by (September 27th, 2016) ► A much too short and basic introduction to Unity.
- Replace a Running Application with a New Version by (December 15th, 2017) ► How a program can replace its own file.
- What's behind the hype about Blazor? by (February 26th, 2020) ► A short presentation of Blazor.
- Write Once, Run Everywhere with .NET and the Uno Platform — Right now, in Visual Studio, you can create a solution that takes a single UI with its code and shares it across Windows, Android, macOS, iOS and web browsers. It's not a perfect cross-platform solution (yet), but it's here now. by (June 30th, 2020) ► Some information (mostly details on creating a projet in Visual Studio) about Uno.
-
History
-
3.0
- Introduction to C# 3.0↑🚫 by (September 27th, 2007) ► Automatic properties, implicitly typed variables, object initialisers, collection initialisers, LINQ & anonymous types, lambda expressions, and extension methods.
-
5.0
-
C# 5.0: More Than Just Async by (November 1st, 2012) ► The caller information attributes (
CallerMemberName
,CallerFilePath
andCallerLineNumber
), fixingforeach
and LINQ closures, and fixing the evaluation order of named and positional arguments.
-
C# 5.0: More Than Just Async by (November 1st, 2012) ► The caller information attributes (
-
6.0
- The Future of C#🗑️ by and (May 29th, 2014) ► Roslyn and some new C# 5 features.
- What's New In C# 6.0🚫 by (November 12th, 2014) ► A quick presentation of the C# 6 features (only syntactic sugars), the same as than the next article.
- Top 10 C# 6.0 Language Features by (December 10th, 2014) ► The title says it all.
-
7.0
- The Future of C# – Mads Torgersen & Dustin Campbell by and (April 27th, 2016) ► A presentation of the features considered for C# 7 and Visual Studio 15.
- The .NET Language Strategy by (February 1st, 2017) ► The strategy for the future of C#, VB and F#.
-
Understanding C# Tuples by (April 5th, 2017) ► The improvements of
Tuple
. - Using C# 7 Pattern Matching↓ by (April 5th, 2017) ► A very short presentation of C# 7 pattern matching.
-
Exploring C# 7
-
Exploring C# 7 - Binary Literals by (February 4th, 2016) ► Binary literals (with the
0b
prefix) and using underscore to group digits. - Exploring C# 7 - Local Functions by (February 5th, 2016) ► Local functions (i.e. functions in functions).
- Exploring C# 7 - Enabling C# 7 Features in Roslyn by (February 9th, 2016) ► Getting Roslyn from Github, changing its code to enable the new features and compiling it.
- Exploring C# 7 - Pattern Matching by (February 11th, 2016) ► Two possible syntaxes for doing class matching on an object.
-
Exploring C# 7 - Binary Literals by (February 4th, 2016) ► Binary literals (with the
- 8.0
-
9.0
- Welcome to C# 9.0 by (May 20th, 2020) ► The features of the new release.
-
3.0
-
LINQ
- Introducing C# 3 – Part 4🚫 by (August 5th, 2008) ► A good introduction to LINQ.
- Expert to Expert: Erik Meijer and Bart De Smet - LINQ-to-Anything🗑️ by , , and (October 15th, 2008) ► How to implement a LINQ-to-whatever interface.
-
LINQ - Beyond Queries by Scott Allen↑🗑️ by (April 15th, 2010) ► The features that have been introduced with LINQ: extension methods, lambda expressions,
Func<>
andAction<>
types,Expression<>
to create syntax trees, and implicit typing. - Deep Dive into Microsoft ADO.NET Entity Framework🗑️ by and (June 10th, 2010) ► Some EF4 use examples: class inheritance, mapping a single table to multiple entities, using stored procedures, the repository design pattern, writing unit tests, and improving performance.
- 10 Ways LINQ Can Improve Your C# Programming by (December 17th, 2010) ► Some common situations where LINQ can be used to get more readable code.
-
Entity Framework
- Select N+1 Problem – How to Decrease Your ORM Performance by (August 18th, 2010) ► How to use eager loading to reduce the number of database queries.
- Entity Framework Enum Support - Code First (EF5 onwards)🚫 by (2012) ► The title says it all.
- Working with Object Context in the ADO.NET Entity Framework — Take advantage of the Object Context in Entity Framework to perform CRUD operations and attach or detach entities.🚫 by (January 20th, 2012) ► A very short introduction to Entity Framework.
- Entity Framework 7🗑️ by (November 12th, 2014) ► Support of Windows Phone, Windows Store, ASP.NET 5, .NET Core and non-relational databases.
- Entity Framework & Resolving Team Migration Conflicts🚫 by (September 18th, 2015) ► How to handle EF merge conflicts when updating the database.
-
Practical Entity Framework for C#
- Practical Entity Framework for C#: Explore Entity Framework🚫 by (2010) ► An introduction to Entity Framework.
-
Practical Entity Framework for C#: Compiled Queries in Entity Framework by (2010) ► Using
CompiledQuery
to compile LINQ to SQL requests. - Practical Entity Framework for C#: Entity Framework for ASP.NET by (2010) ► An introduction to Entity Framework in an ASP.NET application.
- Practical Entity Framework for C#: Stored Procedures in Entity Framework by (2010) ► How to use Stored Procedures from Entity Framework.
-
Practical Entity Framework for C#: Paging by (2010) ► Using eSQL’s
skip
andlimit
keywords for implementing paging.
-
Transactions
- using new TransactionScope() Considered Harmful🚫 by (June 3rd, 2010) ► The title says it all.
-
All About TransactionScope by (January 6th, 2014) ► A presentation of
TransactionScope
, with a lot of English mistakes.
-
Multithreading
- Inside Parallel Extensions for .NET 2008 CTP Part 1🗑️ by , , , , , and (June 5th, 2008) ► A presentation of the improvements done in CTP2 on the Task Parallel Library, Parallel LINQ, the new Coordination Data Structures, and the scheduler.
- ↪Inside Parallel Extensions for .NET 2008 CTP Part 2🚫 by , , , , , and (June 5th, 2008) ► The continuation of the previous video.
-
How to Get Started with Multi-Core: Parallel Processing You Can Use🚫 by (October 24th, 2009) ► A short overview of
Task
. - How to Parallelize Your Application - Part 1 Why Do It?🗑️ by (March 11th, 2010) ► The very familiar explanation of why applications now need to be multithreaded: CPUs cannot have a higher frequency, so they have an increasing number of cores instead.
- ↪How to Parallelize Your Application - Part 2 Threads v Tasks🗑️ by (March 11th, 2010) ► The explanation of the differences between threads and tasks.
-
↪How to Parallelize Your Application - Part 3 Using Tasks🗑️ by (March 11th, 2010) ► A presentation of the three ways to use tasks: imperative task parallelism (using
System.Threading.Tasks
), imperative data parallelism (using parallelFor
,ForEach
,Invoke
fromSystem.Threading.Tasks.Parallel
), and declarative data parallelism (using PLINQ). - Stephen Toub: Inside TPL Dataflow🗑️ by and (February 2nd, 2011) ► The title says it all.
-
Asynchronous Programming in .NET: I'll Call You Back by (March 24th, 2011) ► A too short presentation of three ways to implement multi-threading:
BackgroundWorker
,Control.BeginInvoke
, and implementing theIAsyncResult
interface. - Understanding Data Parallel in the .NET Task Parallel Library by (June 29th, 2011) ► An introduction to TPL Data Parallel.
-
async
/await
-
Mads Torgersen: Inside C# Async🗑️ by and (October 28th, 2010) ► A description of the
async
/await
new C# keywords and some of their use. - Stephen Toub: Task-Based Asynchrony with Async🗑️ by and (October 28th, 2010) ► Another presentation, more detailed, of the same subject.
-
Rx Update: Async support, IAsyncEnumerable and more with Jeff and Wes🗑️ by , , and (November 15th, 2010) ► The relation between
async
/await
and Rx, and some other Rx news. -
Mads Torgersen: Visual Studio Async CTP (SP1 Refresh) Overview🗑️ by and (April 13th, 2011) ► CTP2 running on Windows Phone, support of non-US and Express Visual Studio, the miscellaneous origins of
await
… -
Stephen Toub: Async Update - Technical Overview and Building Awaitable Types🗑️ by and (April 15th, 2011) ► A status of
async
in CTP2: whereasync
cannot be used, some implemented optimisations, how to create awaitable types… -
Lucian Wischik: Async Compiler - Bug Fixes, Updates and Core Improvements🗑️ by and (April 19th, 2011) ► Description of some CTP1 bug fixes, safe and unsafe uses of
await
, what will have to be changed from CTP to the next Visual Studio release, exceptions,unsafe
code… - Understanding a Simple Async Program by (June 26th, 2012) ► The title says it all.
-
Mads Torgersen: Inside C# Async🗑️ by and (October 28th, 2010) ► A description of the
-
Code Contracts
- Better code with C# code contracts🚫 by ► A good short overview of Code Contracts.
- Thomas Ball - Advances in Code Contracts for .NET by (June 6th, 2012) ► A presentation of Code Contracts, how to use them with Pex, their improvements with Roslin…
- Code Contracts User Manual (August 14th, 2013) ► The title says it all.
- Code Contracts is the next coding practice you should learn and use🚫 by (December 18th, 2013) ► Some proselytism on Code Contracts, but ideas are not well structured.
-
ASP.NET
- IIS and ASP.NET: The Application Pool by (August 6th, 2003) ► A presentation of IIS Application pool.
- Model View Presenter🚫 by (January 27th, 2008) ► A presentation of the MVP design pattern implementing in C# and the fact that it enables easy unit testing.
- ASP.NET MVC Music Store by (June 2010) ► An introduction to MVC using C# (the last part is botched).
-
Creating Custom HTML Helpers (June 2010) ► Two ways to create an HTML helper: using a static method and importing its namespace, or adding an extension method to the
HtmlHelper
class. - Introducing IIS Express by (June 29th, 2010) ► A new Web Server trying to provide the power of IIS and the simplicity of the ASP.NET development server.
- Intro to ASP.NET MVC by (August 14th, 2010) ► Another introduction to MVC using C#.
-
Controlling our ClientIDs in ASP.NET 4 (December 6th, 2010) ► Using the
ClientIDMode
property to control how ASP.NET generates the HTML IDs. - Shave Time Off your Development with ASP.NET MVC Razor by (January 20th, 2011) ► An introduction to Razor, a new view engine.
- Pragmatic JavaScript, jQuery & AJAX with ASP.NET🗑️ by (April 12th, 2011) ► Some information about using jQuery in ASP.NET and a demo of using SQL Server Notification Services to implement a Comet application.
- Brad Wilson - Microsoft's Modern Web Stack, Starring ASP.NET Web API by (June 7th, 2012) ► A demo with Knockout (for MVVM on the Browser side), Web API (for generating and consuming the data on the Server side), and SignalR (for persistent connection).
- Posting Data to ASP.NET Sites with the ASP.NET Web API by (September 7th, 2012) ► How to handle a HTTP POST.
-
Build an ASP.NET JavaScript Generator by (November 1st, 2012) ► How to generate JavaScript on the server: using
ClientScriptManager
to register a JavaScript file and to declare an array, adding an event handler, and using T4 for a parametrised JavaScript generation. - Displaying Real Time Data using HTML5 and ASP.NET by (February 7th, 2013) ► How to use HTML 5’s Server Sent Events in ASP.NET.
- Brock Allen - OWIN and Katana: What the Func? by (June 3rd, 2014) ► An introductions of the OWIN standard, the Katana implementations, and coding some simple samples.
- ASP.NET 5🗑️ by (November 12th, 2014) ► No more compilation, .NET framework and libraries packaged with the application, performance improvements, better cloud support…
- ASP.NET 5 for .NET Framework & .NET Core🗑️ by (November 12th, 2014) ► Running ASP.NET on .NET Framework and/or .NET core.
- Web Forms 4.6🗑️ by (November 12th, 2014) ► Support HTTP 2, integration with Roslyn, and asynchronous model binding.
- Getting Started with ASP.NET MVC 5 by (May 28th, 2015) ► A tutorial of MVC5 with EF6.
- What is DNX? by (July 30th, 2015) ► A basic introduction to DNX finishing with an advertisement for Red Gate products.
-
Azure
- Create an ASP.NET web app in Azure App Service🚫 by (August 10th, 2015) ► A step by step explanation on how to build and publish an ASP.NET application in Azure from Visual Studio.
-
Office interoperability
-
COM Interop and Office in C# 4.0🚫 by (2010) ► COM interface is simplified with named optional arguments,
dynamic
, and indexed properties. - Convert Visual Basic for Applications Macro to C# 4.0 by (2010) ► How to translate a macro from VBA into C#.
-
COM Interop and Office in C# 4.0🚫 by (2010) ► COM interface is simplified with named optional arguments,
-
Roslyn
- The Roslyn Project - Meet the Design Team🗑️ by , , , , and (November 16th, 2011) ► A presentation of the Roslyn project: the new C# and Visual Basic compilers.
- 10 Questions, 10 Answers on Roslyn by (March 20th, 2012) ► Some information about Roslyn.
- .NET Compiler Platform ("Roslyn") for the Rest of Us by and (June 24th, 2014) ► Some information about Roslyn: some refactoring tools in VS 2014 CTP (these tools exist in some other IDEs for years…), better C#/VB integration…
- Roslyn Code Analysis in Easy Samples (Part 1) — Describe Roslyn code analysis functionality providing easy samples by (January 11th, 2015) ► A simple example demonstrating how to get information on a class, a member or an attribute.
-
Yet Another Language Geek
- Continuation-Passing Style by (December 22nd, 2007) ► The application of Continuation-Passing Style to C#.
- The Marvels of Monads by (January 10th, 2008) ► An introduction to Monads in C#.