
Quelques raccourcis :
C#
– Bases, culture et pédagogie
Comme tous les langages, C#
a son lot de particularités techniques et culturelles. Cette page en liste
quelques-unes, sans avoir la moindre prétention d'exhaustivité.
Ressources et textes d'introduction
Généralités
Liens vers diverses considérations d'ordre général :
Technique
Liens vers diverses considérations d'ordre technique :
Compilation
À propos de la mécanique de compilation en
C#
et des détails d'ordre plus syntaxique du langage :
Concurrence
Constantes
Conteneurs et collections
Encapsulation
Fonctions et méthodes
Héritage
Internationalisation
LINQ
- En 2014,
Eric Lippert explique pourquoi un jeton silencieux est inséré dans
la traduction de requêtres LINQ :
- Petit exemple documenté par Jean-Noël Guilbault :
Linq.html
Mathématiques
Opérateurs
J'ai placé les liens à ce sujet sur Operateurs.html
Parallélisme
Pattern Matching
En 2014 s'entament des discussions autour de
l'ajout de Pattern Matching en
C#.
Qualifications d'accès
- La qualification protected de
C# :
J'ai localisé les informations en ce sens dans
../../Liens/Systemes-types--Liens.html#langage_Cdiese
Divers
- Jouer avec une imprimante :
http://odetocode.com/humor/68.aspx
- Manipuler des noms de répertoires, par Craig Gidney en
2013 :
http://twistedoakstudios.com/blog/Post4872_dont-treat-paths-like-strings
- Mêler du code
F# et du code
C# :
http://www.voyce.com/index.php/2011/05/09/mixing-it-up-when-f-meets-c/
- Ce qui est bon pour
C# peut ne pas l'être pour
JavaScript :
-
Manipuler des images en format
SVG avec
C#,
par Lasitha Ishan Petthawadu en 2014 :
http://lasithapetthawadu.wordpress.com/2014/02/24/using-vector-svg-graphics-in-c-net/
-
Programmer un type Either<T,U> en
C#, donc un
type dont les instances peuvent contenir un T ou un U
puis être testées dynamiquement pour savoir lequel des deux, texte de
2012 :
http://siliconcoding.wordpress.com/2012/10/26/either_in_csharp/
-
Itérateurs et énumérateurs en
C#,
texte du Code Project par Karthik Chintala en 2014 :
http://www.codeproject.com/Tips/749456/Iterators-in-Csharp
-
Pourquoi
C# utilise-t-il l'encodage UTF-16? Explication d'Eric Lippert en
2014 :
http://blog.coverity.com/2014/04/09/why-utf-16/
-
Programmer en fonction d'un
SIMD
64 bits avec
C#, par Gastón Hillar :
http://www.drdobbs.com/windows/64-bit-simd-code-from-c/240168851
-
La rétrocompatibilié est une chose difficile, en
C#
comme avec d'autres langages, comme le souligne
Jon Skeet en
2015 :
http://codeblog.jonskeet.uk/2015/06/03/backwards-compatibility-is-still-hard/
-
Les types « blittables » en
C#,
expliqués par Andrey Akinshin en 2015 :
http://aakinshin.net/en/blog/dotnet/blittable/
Considérations de versions
Programmer dans un langage
.NET
tel que C#
induit une dépendance forte envers la plateforme, les deux étant fortement
couplés :
- Guides du « bluffeur » :
- À quoi sert l'option langversion d'un
compilateur C#? Explications d'Eric Lippert en 2013 :
http://ericlippert.com/2013/04/04/what-does-the-langversion-switch-do/
- Raffinements avec C#
4.0 :
- Raffinements avec C#
5.0 :
- Raffinements avec C# 6.0 :
- nouveaux éléments prévus pour le langage, selon Adam Ralph en
2013 :
http://adamralph.com/2013/12/06/ndc-diary-day-3/?1
- comparaisons syntaxiques de ces éléments, par Damien Guard en
2013 :
http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated
- point de vue de
Jon Skeet en 2014 :
http://msmvps.com/blogs/jon_skeet/archive/2014/04/04/c-6-first-reactions.aspx
- rapport proposé par
Mads Torgensen, en 2014 :
https://gist.github.com/anonymous/9997622
- en 2014, Filip Ekberg liste ce qu'il estime
être les principaux attraits de C# 6.0 :
http://www.dotnetcurry.com/showarticle.aspx?ID=1042
- les meilleurs aspects de C# 6.0,
selon Marco Costello en 2014 :
http://www.marccostello.com/csharp-6-whats-good/
- liste de caractéristiques de C# 6.0
telles qu'implémentées avec Roslyn :
https://roslyn.codeplex.com/wikipage?title=Language%20feature%20status
- en 2014,
Jon Skeet
explique l'impact de C# 6.0
sur un vrai projet :
http://codeblog.jonskeet.uk/2014/12/08/c-6-in-action/
- textes de 2014 par Kunal Chowdhury, portant sur
des particularités
de C# 6.0 :
- survol des nouvelles fonctionnalités de C# 6.0,
un texte du Code Project
en 2014 par Srinivasa Dinesh Parupalli :
http://www.codeproject.com/Tips/856913/Csharp-New-Features-Explored
- gestion des événements de manière élégante avec C# 6.0,
par
Jon Skeet
en 2015 :
http://codeblog.jonskeet.uk/2015/01/30/clean-event-handlers-invocation-with-c-6/
- « analyse pratique » des nouvelles caractéristiques de C# 6.0,
par Vladimir Milev en 2015 :
- survol des nouvelles caractéristiques, par Alex Mackey en 2015 :
https://gooroo.io/GoorooTHINK/Article/16282/C6-New-Features/18087
- survol des nouvelles caractéristiques :
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-6
- En vue de C# 7.0 :
- proposition de
Jon Skeet
en 2015, qui pourrait impliquer des changements
en profondeur dans le
CLR :
http://codeblog.jonskeet.uk/2015/01/12/c-7-feature-request-1-extension-attributes/
- les minutes d'une rencontre des concepteurs (fort intéressant), en
2015 :
https://github.com/dotnet/roslyn/issues/98
- ce qui est sur la table de travail, en 2015 :
https://github.com/dotnet/roslyn/issues/2136
- en 2015, Jonathan Allen décrit ce qu'il
envisage comme type Tuple pour C# 7.0 :
http://www.infoq.com/news/2015/04/CSharp-7-Tuples
- en 2015, Jonathan Allen discute des
nullable references et des mandatory references envisagées
pour C# 7.0 :
http://www.infoq.com/news/2015/04/CSharp-7-Null
- survol de ce que C# 7.0 contiendra probablement, et n'offrira
probablement pas, par Rob Marvin en 2015 :
http://sdtimes.com/c-7-the-features-you-will-and-wont-see/
- entrevue avec
Mads Torgensen par Pierre-Luc Maheux, en
2015, offrant un coup d'oeil sur ce que promet d'offrir C# 7.0 :
http://www.infoq.com/news/2015/10/csharp-7-sneak-peek
- un survol proposé par Alex Mackey en 2016 :
https://gooroo.io/GoorooTHINK/Article/16674/C7-Features/21575
- il semble que le Pattern Matching, du moins dans son acception
initiale plus ambitieuse, ne fera pas partie de cette version, du moins si
on se fie à Sergio Simone en 2016 :
http://infoq.com/news/2016/05/csharp7-pattern-matching-removed
Critiques
Critiques du langage et de la plateforme :