C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France...
-
Upload
charline-chapuis -
Category
Documents
-
view
106 -
download
2
Transcript of C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France...
![Page 1: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/1.jpg)
C# 2.0, un an après
Mitsuru FURUTARelations techniques développeurs - Microsoft [email protected] – http://blogs.microsoft.fr/mitsufu
![Page 2: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/2.jpg)
Agenda
Introduction
Generics
Nullables
-- Pause --
Méthodes anonymes
Itérations
…C# 3.0
![Page 3: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/3.jpg)
Introduction
Pourquoi une telle présentation ?
Au delà de la compréhension technique, un nouveau langage demande également à être assimilé et intégré dans nos habitudes de développement. C# 2.0 apporte plusieurs nouvelles extensions importantes permettant d’exploiter toujours au mieux les nouveautés de la plate-forme .Net 2.0.
Avant d’adopter ces nouveautés, il est nécessaire d’en comprendre à la fois les intérêts et les contraintes.
![Page 4: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/4.jpg)
Les generics
Les generics permettent aux classes, structures, interfaces, délégués et méthodes d’être paramètrés par les types de données qu’ils stockent et qu’ils manipulent.
Les types ainsi définis apportent:la robustesse d’un typage fort
la clarté du code (plus de casts)
la performance en supprimant les boxing/unboxing
la sécurité d’une vérification accrue à la compilation
Bien que ressemblant fortement aux templates du C++, la syntaxe de C# 2.0 offre une approche plus simple et plus sécurisée. (limitations, contraintes)
![Page 5: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/5.jpg)
Les generics: syntaxe
class MyClass<T> {}struct MyStruct<T> {}delegate R MyDelegate<P, R>(P param);interface IMyInterface<T> { T GetData(); }void MyMethod<T>(List<T> param) {};
Contraintes: where, new(), structLe mot clé “default”
Attention aux overloadsNe pas casser la programmation objet !
![Page 6: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/6.jpg)
Generics: syntaxe et introduction + Reflector
DemoDemo
![Page 7: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/7.jpg)
Les generics: inférence de type
Possibilité d’omettre un paramètre de type lorsque le compilateur peut le déduire de manière certaine
Cette fonctionnalité est primordiale pour la simplicité d’écriture des séquences Linq
q.Select<string>().ToList<string>().First<string>();
q.Select().ToList().First();
![Page 8: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/8.jpg)
Generics: l’inférence de type
DemoDemo
![Page 9: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/9.jpg)
Les generics: compilation et reflection
Nature de la compilationLes generics ne sont pas des templates !
Les vérifications de types ont bien lieu à la compilation comme avec un pré-processeur de templatesMais les classes typées ne sont pas compilées en IL (!= java)
Les generics sont identifiés dans les assembly .Net
Les classes (ou méthodes) fortement typées sont compilées nativement au moment de la première utilisation de chacune
La reflection de la CLR 2.0 a été étendue pour récupérer ces informations de type
Tests: t.IsGenericType, t.IsGenericTypeDefinition
Création: Type.MakeGenericType()
![Page 10: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/10.jpg)
Generics: la reflection
DemoDemo
![Page 11: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/11.jpg)
Les generics: compilation et reflection
Quelques dangers:Membres statiques
Classes imbriquées
![Page 12: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/12.jpg)
Les generics: cas d’utilisation
FileLineReader
Gestion d’un cache d’objects
![Page 13: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/13.jpg)
Generics: cas d’utilisation
FileLineReader
Gestion d’un cache d’objets
DemoDemo
![Page 14: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/14.jpg)
Les nullables
Syntaxe et définition:Les nullables sont des structures génériques qui permettent de remplacer les types « valeurs » en leur apportant la possibilité d’être null.
Nullable<Int> i;
i = 123;
int j = (int) i; int j = i.Value;
if (i.HasValue)
Le cas de DBNull.Value
![Page 15: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/15.jpg)
Nullables: définition + Reflector
DemoDemo
![Page 16: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/16.jpg)
PausePause
![Page 17: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/17.jpg)
Les méthodes anonymes
Syntaxe et définitionLes méthodes anonymes permettent de fournir à un délégué des instructions directement « inlinées » à l’endroit où le délégué est affecté.
Tous les évènements et callbacks du framework .Net étant basés sur des délégués, les méthodes anonymes simplifient grandement leur usage.
Outre une simplification d’écriture, les méthodes anonymes permettent d’avoir un accès partagé avec la portée locale.
L’exécution réelle du délégué pouvant être asynchrone, une structure complexe permet la « survie » des données partagées au-delà de la méthode « hôte ».
![Page 18: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/18.jpg)
Les méthodes anonymes:
Introduction + Reflector
Méthodes de List<>
DemoDemo
![Page 19: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/19.jpg)
Les méthodes anonymes:
Exécution différée et exécution parallèle
DemoDemo
![Page 20: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/20.jpg)
Les méthodes anonymes
Comportement avec les instructions de blocAttention à la lisibilité !
Le cas du try…catch
Profiter de l’exécution différéeFactoriser les instructions de bloc !
![Page 21: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/21.jpg)
Les méthodes anonymes:
Les instructions de bloc
DemoDemo
![Page 22: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/22.jpg)
Itérations
Rappel sur IEnumeratorReset/Current/MoveNext
IEnumerable ou comment combler l’absence de délégation d’implémentation d’interface
Les mots clés: yield return / yield break
![Page 23: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/23.jpg)
Les itérations:
FileLineReader, suite et fin
Les classes Enum revisitées
DemoDemo
![Page 24: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/24.jpg)
…C# 3.0
Les expressions lambdaOffrir une écriture simplifiée des méthodes anonymes
button1.Click += (o, args) => MessageBox.Show(o);
Les requêtes Linq
![Page 25: C# 2.0, un an après Mitsuru FURUTA Relations techniques développeurs - Microsoft France mitsufu@microsoft.commitsufu@microsoft.com – //blogs.microsoft.fr/mitsufu.](https://reader035.fdocument.pub/reader035/viewer/2022062621/551d9d80497959293b8b8c45/html5/thumbnails/25.jpg)
C# 3.0
ToDictionnary()
Recherche d’attributs
DemoDemo