La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

C# 2.0, un an après Mitsuru FURUTA

Présentations similaires


Présentation au sujet: "C# 2.0, un an après Mitsuru FURUTA"— Transcription de la présentation:

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


Télécharger ppt "C# 2.0, un an après Mitsuru FURUTA"

Présentations similaires


Annonces Google