Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
C# 2.0, un an après Mitsuru FURUTA
Relations techniques développeurs - Microsoft France –
2
Agenda Introduction Generics Nullables -- Pause -- Méthodes anonymes
Itérations …C# 3.0
3
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.
4
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)
5
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(), struct Le mot clé “default” Attention aux overloads Ne pas casser la programmation objet !
6
Generics: syntaxe et introduction + Reflector
Demo Generics: syntaxe et introduction + Reflector
7
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();
8
Generics: l’inférence de type
Demo Generics: l’inférence de type
9
Les generics: compilation et reflection
Nature de la compilation Les generics ne sont pas des templates ! Les vérifications de types ont bien lieu à la compilation comme avec un pré-processeur de templates Mais 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()
10
Generics: la reflection
Demo Generics: la reflection
11
Les generics: compilation et reflection
Quelques dangers: Membres statiques Classes imbriquées
12
Les generics: cas d’utilisation
FileLineReader Gestion d’un cache d’objects
13
Generics: cas d’utilisation FileLineReader Gestion d’un cache d’objets
Demo Generics: cas d’utilisation FileLineReader Gestion d’un cache d’objets
14
Les nullables Syntaxe et définition: Le cas de DBNull.Value
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
15
Nullables: définition + Reflector
Demo Nullables: définition + Reflector
16
Pause
17
Les méthodes anonymes Syntaxe et définition
Les 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 ».
18
Demo Les méthodes anonymes: Introduction + Reflector
Méthodes de List<>
19
Les méthodes anonymes: Exécution différée et exécution parallèle
Demo Les méthodes anonymes: Exécution différée et exécution parallèle
20
Les méthodes anonymes Comportement avec les instructions de bloc
Attention à la lisibilité ! Le cas du try…catch Profiter de l’exécution différée Factoriser les instructions de bloc !
21
Les méthodes anonymes: Les instructions de bloc
Demo Les méthodes anonymes: Les instructions de bloc
22
Itérations Rappel sur IEnumerator Reset/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
23
Demo Les itérations: FileLineReader, suite et fin
Les classes Enum revisitées
24
…C# 3.0 Les expressions lambda Les requêtes Linq
Offrir une écriture simplifiée des méthodes anonymes button1.Click += (o, args) => MessageBox.Show(o); Les requêtes Linq
25
C# 3.0 ToDictionnary() Recherche d’attributs
Demo C# 3.0 ToDictionnary() Recherche d’attributs
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.